-14

私はJavaでジェネリックを学びました。ジェネリック型、生の型、境界型パラメーター、および型推論を理解できます。ジェネリックでワイルドカードを学びました。ワイルドカードは?型引数として未知の型を表します。クラスを として定義してCompanyいますが、コンパイラはそれが未定義の型パラメーターであると通知します。メソッドを渡しListたのですが、ここでエラーは発生しません。ワイルドカードを使用する必要がある場所とその目的を教えてください。

Class Company<?> // error is occurred at this line
{
    void sum(List<? extends Number> ls) //does not occur here
    { } 
} 

これらの違いを説明してもらえますか?

4

2 に答える 2

4
Class Company<?> 

ジェネリック クラス宣言では使用できません。次のよう?にジェネリック クラスを宣言する必要があります。

Class Company<T>

ドキュメントから:

ジェネリック クラスは、次の形式で定義されます。

class name<T1, T2, ..., Tn> { /* ... */ }

山かっこ (<>) で区切られた型パラメーター セクションは、クラス名の後に続きます。型パラメーター (型変数とも呼ばれます) T1、T2、...、および Tn を指定します。

于 2013-01-25T15:00:47.310 に答える
0

後で参照できるように、型に名前を割り当てる必要があります。多分あなたはこのように使いたいと思っていました:

class Company<T extends Number> {

    void sum(List<T> ls) {
    }
}
于 2013-01-25T15:03:14.403 に答える