Java 虚拟机不仅要看类的全名是否相同,还要看加载此类的类加载器是否一样。只有两者都相同的情况,才认为两个类是相同的。即便是同样的字节代码,被不同的类加载器加载之后所得到的类,也是不同的。比如一个 Java 类
com.example.Sample
,编译之后生成了字节代码文件Sample.class
。两个不同的类加载器ClassLoaderA
和ClassLoaderB
分别读取了这个Sample.class
文件,并定义出两个java.lang.Class
类的实例来表示这个类。这两个实例是不相同的。对于 Java 虚拟机来说,它们是不同的类。试图对这两个类的对象进行相互赋值,会抛出运行时异常ClassCastException
。
JVM怎样判断两个类是否相同
最新推荐文章于 2024-06-30 03:17:06 发布