型消去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   に答える