2016-12-05 7 views
0

奇妙な質問は、EnumMapのコンストラクタ内にenum.classが必要な理由は何ですか?それは、テンプレートに渡されたので、 それは...その型を知っている私たちが使用しなければならない理由EnumMapのコンストラクタ内でenum.classが必要なのはなぜですか?

意味、:EnumMap<E,V> e = new EnumMap<E,V>(E.class);と私たちは使用できません。EnumMap<E,V> e = new EnumMap<E,V>();

答えて

3

「それはテンプレートに渡されたので、それはそのタイプを知っています... "

テンプレートの概念はJavaでは存在しません。ジェネリックは型チェック中に使用されますが、そのデータは実行時に使用されません。つまり、実行時には実際のコードはEnumMap e = new EnumMap()になります。

マップサイズを初期化するための一意の列挙値の数を決定するためにクラスが使用され、その情報は型システムを通じてクラスに渡すことはできません(ジェネリックの制限のため) Classインスタンス。

+0

偉大な答えは、私はC + +とテンプレートを混合。 –

関連する問題