1

我正在尝试将 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[]吗?我认为整数是一个通用的......

4

3 回答 3

5

推(一个,一个堆栈);由于某种原因给我找不到符号。

是的,因为你试图在 中调用它StackMain,而它只存在于Stack<T>. 您需要创建一个Stack<Integer>才能调用它:

Stack<Integer> stack = new Stack<Integer>();
stack.push(a, oneStack);

如果你想让它在不创建实例的情况下被调用,它需要是一个static方法。(我假设实际上有更多代码。)

(如果您对 Java 很陌生,我建议您在担心泛型之前专注于真正的核心内容,例如调用方法和创建对象。您需要尽快解决它们,但如果您尝试了解它们虽然您仍在掌握最基本的知识,但从长远来看,它会减慢您的速度。)

于 2013-06-07T05:58:22.133 回答
0

您需要在调用 push(...) 方法之前创建堆栈对象的实例

于 2013-06-07T05:59:55.323 回答
0

方法 push 对 StackMain 类不可见(就像在 Stack 类中一样),除非您创建 Stack 的实例然后引用它。您应该将此方法本地化到 StackMain 类或创建 Stack 类的实例。

于 2013-06-07T06:05:48.930 回答