1

整数を汎用配列にプッシュしようとしています。これが私のコードです:

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

プッシュ (a、oneStack); 何らかの理由でシンボルが見つかりません。

はい、 で呼び出そうとしているため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 は、Stack のインスタンスを作成して参照しない限り、StackMain クラスには表示されません (Stack クラスにあるため)。このメソッドを StackMain クラスにローカライズするか、Stack クラスのインスタンスを作成する必要があります。

于 2013-06-07T06:05:48.930 に答える