JAVA如何判断两个类是否相等?
作者:互联网
两个类是否相等,取决于他们是否由统一个类加载器来加载。如果他们来自不同的类加载器,哪么就算这两个类来自同一Class文件,他们也是不相等的。
哪么我们如何判断两个类是否来自于同一加载器呢?
从各书籍和博客上可以了解到类加载有5个阶段:加载 验证 准备 解析 初始化
加载阶段通过类的全限定名来获取定义此类的二进制字节流,并将字节流的静态存储结构转化为方法区的运行时数据结构。在堆中生成一个Class对象(Java7中Class对象放在PermGen Space(方法区),但是Java8的HotSpot Jvm移除了PermGen Space,并将类变量加入到堆区中,所以本人认为在Java8以后Class对象分配在堆区之中),准备阶段初始化这个Class类的类变量…
由此可以看出一个类加载器对应一个Class对象,而一个Class对象对应一个类。那么要判断两个类是否相等我们则可以简单的通过他们的Class对象是否是同一个对象即可。
1024吧 发布了60 篇原创文章 · 获赞 1 · 访问量 3303 私信 关注标签:相等,JAVA,对象,是否,PermGen,判断,Class,加载 来源: https://blog.csdn.net/qq_16438883/article/details/103999299