为了账号安全,请及时绑定邮箱和手机立即绑定

如何理解“泛型类被它的所有实例所共享”?

如何理解“泛型类被它的所有实例所共享”?

忽然笑 2018-08-19 16:13:28
看书的时候看到“泛型类被它的所有实列所共享”,不是很理解这句话。书上给出的解释如下:    以下面的方式创建list1和list2:    ArrayList<String> list1 = new ArrayList<>();    ArrayList<Integer> list2 = new ArrayList<>();    尽管在编译的时候ArrayLIst<String>和ArrayList<Integer>是两种不同的类型,但是,在运行时只有一个ArrayList类加载到JVM中。为什么两个ArrayList类最终只有一个加载到JVM中去?请指教,谢谢
查看完整描述

1 回答

?
波斯汪

TA贡献1811条经验 获得超4个赞

我感觉从CLASS字节码文件上更好理解,ClASS对应的是具体的一个类。

ArrayList 在JRE中的定义类只有一个ArrayList<Object>,因此,你见过JRE中有ArrayList<String>和 ArrayList<Integer>这两个类么?

String和Integer只是ArrayList<Object>实例化时的两个参数而已,

再准确一点

ArrayList<String> list1 = new ArrayList<>();

ArrayList<Integer> list2 = new ArrayList<>();

只是两个对象,而不是两个类(JVM不可能动态生成一个类的),JVM 加载的是类CLASS文件(实实在在的类),为不是这两个值,他们指向的都是ArrayList<Object>类的class文件


查看完整回答
反对 回复 2018-09-09
  • 1 回答
  • 0 关注
  • 721 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信