型消去instanceof
のためだと思いますが、使用class literals
することはできませparameterized generic types
んunbounded wild card types
。Java言語設計者がこの例外を許可したのはなぜですか?無制限のワイルドカードタイプの型消去の役割はありませんか?
質問する
1481 次
1 に答える
8
重要なのは、オブジェクトはその具象クラスを知っているということですが、そのためのジェネリック型引数は知りません。したがって、を作成するArrayList<Integer>
と、実行時にそれArrayList
が何らかのものであることを認識しますが、その部分については認識しませんInteger
。
「ArrayList
ある種の」部分はまさにそのArrayList<?>
意味であり、それが理由です。
if (foo instanceof ArrayList<?>)
有効です。これは、rawタイプを使用するのと同じです。
if (foo instanceof ArrayList)
于 2013-02-19T13:59:23.673 に答える