GuavaTypeToken
クラスを使用して、任意のタイプのインスタンスを他のタイプのオブジェクトに割り当てることができるかどうかをテストしています。
次のコードスニペットでは、List
から割り当て可能であると宣言されたタイプList<String>
、およびその逆かどうかをテストしています。
TypeToken rawListType = new TypeToken<List>(){};
TypeToken parameterizedListType = new TypeToken<List<String>>(){};
System.out.println(rawListType.isAssignableFrom(parameterizedListType)); //true
System.out.println(parameterizedListType.isAssignableFrom(rawListType)); //false
以下のコードがコンパイルされるので、 (警告付きで)から割り当てることができるのに、なぜ2番目の呼び出しがisAssignableFrom
戻るのですか?:false
List<String>
List
List l = null;
List<String> l2 = null;
l = l2;
l2 = l; //Type Safety Warning
私の直感では、これらのタイプのインスタンスが警告なしで割り当て可能かどうか(?)、Guavaが答えています。それが正しければ、2番目のコードスニペットに示されているように、(警告の有無にかかわらず)オブジェクトを別のオブジェクトに割り当てることができるコンパイラの意味で割り当て可能性を確認するにはどうすればよいですか?