开发者

The difference between "instanceof List" and 'o instanceof List<?>"

开发者 https://www.devze.com 2023-03-12 03:49 出处:网络
I don\'t see any difference in the following: Object o = new LinkedList<Long>(); System.out.println(o instanceof List);

I don't see any difference in the following:

    Object o = new LinkedList<Long>();

    System.out.println(o instanceof List); 
    System.out.println(o instanceof List<?>);

Is there any practical use of instanceof List<?> when instanceof List 开发者_如何学Ccan't be used instead and vise versa?


No difference. The wildcard is erased at compile time.


According to this blog the answer is 'they are exactly the same':

as javac forbids instanceof expressions whose target type is a generic type; for casts, the compiler is slightly more permissive since casts to generic type are allowed but a warning is issued (see above). Anyway, the raw type should be replaced by an unbounded wildcard, as they have similar properties w.r.t. subtyping.

Object o = new ArrayList<String>();
List<?> list_string = (List)o; //same as (List<?>)o
boolean b = o instanceof List; //same as o instanceof List<?>
0

精彩评论

暂无评论...
验证码 换一张
取 消