Java:使用不同类型

时间:2018-01-12 16:14:17

标签: java arraylist polymorphism

我正在构建两个类:class Stack使用ArrayList getremove实现堆栈,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

1 个答案:

答案 0 :(得分:0)

您需要在此处添加泛型。例如:

Arraylist<T> pila;

其中T可以是任何类型。

根据你的代码,它会接受任何类型的数据,但当你想从其他地方访问它时,你肯定会得到类转换异常。

您需要非常具体地确定要存储的元素类型。