1

ジェネリック型にしたい Arraylist を遅らせました。

ArrayList<T> locker = new ArrayList<T>();

次に、ジェネリックである必要がある add メソッドがあります。

public <T extends Gear> boolean add(Gear item)
{

    locker.add(item);// this is giving me compile error => no suitable method found for add(Gear)
    return true;
}

どうすれば修正できますか。ジェネリック型も初めてです。

4

2 に答える 2

5

クラス宣言にジェネリック型が既にある場合は、メソッドでジェネリック型を再宣言する必要はありません。

public class Locker<T extends Gear> {
    private List<T> locker = new ArrayList<T>();

    public boolean add(T item) {
        locker.add(item);
        return true;
    }
}
于 2012-11-30T12:22:13.157 に答える
1

事実上、2 つのジェネリック パラメーター タイプが定義されています。名前が同じだから、同じだと信じる典型的な罠に陥っています。最初のジェネリック パラメーター (T) はクラス レベルであり、それを介して使用できます。2 番目のパラメーター (T は Gear を拡張します) は、add メソッドのコンテキスト内でのみ適用されます。

他の人が指摘したように、おそらくクラスレベルのパラメーターを T extends Gear に変更し、メソッドレベルの宣言を削除する必要があります。

于 2012-11-30T12:23:44.433 に答える