[英]Why is int being passed as Object?
import java.util.ArrayList;
class Stack {
private ArrayList stack;
private int pos;
Stack() {
stack = new ArrayList();
pos = -1;
}
int pop() {
if(pos < 0) {
System.out.println("Stack underflow.");
return 0;
}
int out = stack.get(pos);
stack.remove(pos);
pos--;
return out;
}
}
我正在尝试编写一个基本的可变长度堆栈,这是我的代码的片段。 运行此命令时,出现错误:
Main.java:16: error: incompatible types
int out = stack.get(pos);
^
required: int
found: Object
为什么将此作为对象传递?
目前,你是不是定义在举行泛型类型ArrayList
称为stack
所以你会得到一个原始Object
从返回类型ArrayList.get
:
您需要更换
ArrayList stack;
同
ArrayList<Integer> stack;
同样
stack = new ArrayList();
同
stack = new ArrayList<Integer>(); // new ArrayList<>(); for Java 7
也看看使用java.util.Stack
stack
没有被告知它拥有什么变量类型,所以它诉诸于通用Object
。
ArrayList stack;
应该
ArrayList<Integer> stack;
stack.get(int)
方法返回一个对象。 这里的int只是索引。 如果要在索引int
处获取堆栈的值,并且它返回Integer
,则需要执行以下操作:
Integer x = stack.get([int index position]);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.