泛型的class类型,譬如Class<Set<Integer>> 和 Class<Set> 有何区别,使用上有和需要注意的?

泛型的class类型,譬如Class<Set<Integer>> 和 Class<Set> 有何区别,使用上有和需要注意的?

阅读 2.6k
3 个回答

对于虚拟机来说是没有区别的,下面一段代码:

Class<Set<Integer>> aClass = null;
Class<Set> bClass = null;

对其反编译之后可以看到:

Class aClass = null;
Class bClass = null;

这两个类型没有区别。
泛型只是编译器对于代码的限制,主要防止在运行的时候出现java.lang.ClassCastException异常。
像你这两个类型只是表明,一个Class只能放Set<Integer>类型的,而另一个能放Set<?>类型的而已。

实际上根本没有区别,如果Java中的泛型实现一致都是很多大牛级程序员所诟病的特点,你所看到的只不过“语法糖”而已,至少现在还是,他只不过是在存值的时候进行规范,取出的时候进行强制类型转换

java泛型中的类型擦除了解一下。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题