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

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

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

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

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

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

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值