33

void何も返さないジェネリック メソッドがこのように宣言される (または宣言される可能性がある) のはなぜでしょうか。

   public static <E> void printArray( E[] inputArray ) {
     // Display array elements              
     for ( E element : inputArray ){        
        System.out.printf( "%s ", element );
     }
     System.out.println();
   }

<E>返されたオブジェクトの型のように見えますが、メソッドは実際には何も返しません。<E>では、この場合の具体的および一般的なジェネリックメソッドの本当の意味は何ですか?

4

5 に答える 5

10

これ<E>は、ジェネリック型パラメーターの宣言です。これは、「このメソッドには と呼ばれる単一の型パラメーターEがあり、任意の型にすることができる」ことを意味します。

これは戻り値の型ではありません。これは、型パラメーター宣言の、メソッド名の直前にあります。したがって、質問のメソッドの戻り値の型printArrayは stillvoidです。

メソッド宣言の詳細については、JLS のセクション 8.4 を参照してください。

于 2012-07-07T17:41:57.170 に答える
5

返されるオブジェクトの型ではありません。Eメソッド シグネチャの がジェネリック型であり、具象型ではないことを示します。Eこれがないと、コンパイラはメソッドの引数に対応する名前のクラスを探します。

于 2012-07-07T17:41:50.687 に答える
3

< E > は仮型パラメータと呼ばれます。メソッドの戻り値の型ではありません。基本的に、メソッドはさまざまなタイプの配列 (E[] inputArray) をパラメーターとして受け入れることができると言われています。

于 2012-07-07T17:43:11.773 に答える
2

Eは、この関数が呼び出されるときに Gen 関数に渡される実際の型のプレースホルダーとして使用されます。

Eを整数に置き換えることができるとします

于 2012-07-07T17:55:14.597 に答える