我正在尝试将Integer推送到通用数组。这是我的代码:
import java.lang.reflect.Array;
public class StackMain
{
public void main (String[]args)
{
Integer[] oneStack = null;
Integer a = new Integer("1");
oneStack = (Integer[])Array.newInstance(Integer.class, 10);
push(a, oneStack);
}
}
public class Stack<T>
{
private T[] oneStack;
public void push(T item, T[] array)
{
array[1] = item; //dummy method for testing
}
}
但是push(a, oneStack)
由于某种原因给了我一个“找不到符号”的错误。我应该使用Integer[]
代替T[]
吗?我认为Integer是一个通用的......
答案 0 :(得分:5)
push(a,oneStack);由于某种原因,我无法找到符号。
是的,因为您试图在StackMain
中调用它,它只存在于Stack<T>
中。您需要创建一个Stack<Integer>
才能调用它:
Stack<Integer> stack = new Stack<Integer>();
stack.push(a, oneStack);
如果要在不创建实例的情况下允许调用它,则需要使用static
方法。 (我假设现实中有更多的代码。)
(如果你是Java的新手,我建议你专注于真正的核心内容,比如在你担心泛型之前调用方法和创建对象。你需要尽快解决它们,但如果你试图在你仍然掌握基础知识的同时了解它们,从长远来看它会减慢你的速度。)
答案 1 :(得分:0)
您需要在调用push(...)方法之前创建堆栈对象的实例
答案 2 :(得分:0)
方法push对于StackMain类是不可见的(因为它在Stack类中),除非您创建Stack的实例然后引用它。您应该将此方法本地化为StackMain类,或者创建Stack类的实例。