1

このHow Generics works in Javaセクションで は

Java コンパイラは、ジェネリックを使用して記述されたコードを検出すると、そのコードを完全に消去し、生の型、つまりジェネリックを使用しないコードに変換します。タイプに関連するすべての情報は、消去中に削除されます。したがって、ArrayList は JDK 1.5 より前の単純な古い ArrayList になります。たとえば、正式な型パラメーターは、型のオブジェクトまたはスーパー クラスのいずれかに置き換えられます。

私の質問は最後の行についてです - formal type parameters e.g. <K, V> or <E> gets replaced by either Object or Super Class of the Type

それらはどの場合に Object に置き換えられ、どの場合にオブジェクト タイプのスーパー クラスに置き換えられますか?

アップデート :

以下のようなワイルドカードがあるとどうなりますか?

List<? extends Foo>
4

3 に答える 3

1

無制限の型の場合List<T>、消去は type になりますObject

境界型の場合List<T extends Foo>、消去は になりますFoo

于 2013-08-20T07:11:27.770 に答える