一尘不染

Java等于一个类。==与.equals相同

java

我们可以==Class变量进行equals运算而不是期望相同的结果吗?

例如:

Class clazz = xyz;

情况A:

if(clazz == Date.class) {
// do something
}

情况B:

if(Date.class.equals(clazz)) {
// do something
}

案例A和案例B在功能上是否相同?


阅读 222

收藏
2020-12-03

共1个答案

一尘不染

类是最终的,因此不能覆盖其equals()。它的equals()方法是从Object继承的,该Object读取

public boolean equals(Object obj) {
    return (this == obj);
}

所以是的,对于类或任何不重写的类型,它们是相同的 equals(Object)

为了回答您的第二个问题,每个ClassLoader只能加载一个类一次,并且对于给定的完全限定名称,它将始终为您提供相同的Class。

2020-12-03