我正在构建两个类:class Stack
使用ArrayList
get
和remove
实现堆栈,class Test2
使用{Stack
1}}创建所选(在Test2
)个变量中的堆栈。在我的例子中,我选择了字符串,但我也希望它能用于不同的类型。
这些是类:
import java.util.*;
public class Stack{
ArrayList pila;
public void push(Object o) {
pila.add(o);
}
public Object pop() {
if (!pila.isEmpty())
return pila.remove(pila.size()-1);
else return null;
}
}
和
import java.util.*;
public class Test2{
public static void main(String args[]) {
String a = "mario";
String b = "luigi";
String c = "tony";
Stack s = new Stack();
s.pila = new ArrayList<String>();
s.push(a);
s.push(b);
s.push(c);
for (int i=0; i <3; i++) System.out.println(s.pop());
}
}
它正在工作但是在我编译Stack
时它给了我以下警告,我想知道这是否是正确的方法。
Stack.java:6: warning: [unchecked] unchecked call to add(E) as a
member of the raw type ArrayList
pila.add(o);
^ where E is a type-variable:
E extends Object declared in class ArrayList
答案 0 :(得分:0)
您需要在此处添加泛型。例如:
Arraylist<T> pila;
其中T可以是任何类型。
根据你的代码,它会接受任何类型的数据,但当你想从其他地方访问它时,你肯定会得到类转换异常。
您需要非常具体地确定要存储的元素类型。