JAVA如何判断两个类是否相等?

        两个是否相等,取决于他们是否由统一个类加载器来加载。如果他们来自不同的类加载器,哪么就算这两个类来自同一Class文件,他们也是不相等的。

        哪么我们如何判断两个类是否来自于同一加载器呢?

        从各书籍和博客上可以了解到类加载有5个阶段:加载 验证 准备 解析 初始化

        加载阶段通过类的全限定名来获取定义此类的二进制字节流,并将字节流的静态存储结构转化为方法区的运行时数据结构。在堆中生成一个Class对象(Java7中Class对象放在PermGen Space方法区),但是Java8的HotSpot Jvm移除了PermGen Space,并将类变量加入到堆区中,所以本人认为在Java8以后Class对象分配在堆区之中),准备阶段初始化这个Class类的类变量...

        由此可以看出一个Class对象对应一个类,或者说一个类加载器对应一个Class对象。那么要判断两个类是否相等我们则可以简单的通过他们的Class对象是否是同一个对象即可。

猜你喜欢

转载自blog.csdn.net/qq_38296409/article/details/80084830