java:将类与 == 或 .equals() 进行比较:有区别吗?

2022-09-04 23:40:56

可能的重复:
Java 是否保证 Object.getClass() == Object.getClass()?

我知道你应该在一般情况下使用,但是有没有办法让两个对象等于但不等于?equals()Class<?>equals()==

编辑:我特别希望找出是否存在两个类对象,以便

Class<?> cl1 = ...
Class<?> cl2 = ...
cl1.equals(cl2)    ->  true
cl1 == cl2         ->  false

这可能的重复问题似乎没有涵盖这一点。(这是密切相关的)

此外,类对象可能不是由 -- 一个是一系列反射操作(如 Method.getReturnType() )的结果,另一个可能是从一系列反射操作中获得的。someObject.getClass()Class.forName(...)


答案 1

所有对象都具有标识(对象在内存中的位置)和状态(对象的数据)。== 运算符始终比较标识。equals 的默认实现也会比较标识。

更全面的解释:http://www.javapractices.com/topic/TopicAction.do?Id=17


答案 2