Java等于一个类。 和.equals ==一样

我们可以做一个== Classvariables而不是equals并期望相同的结果?

例如:

 Class clazz = xyz; 

案例A:

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

案例B:

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

案例A和案例Bfunction相同吗?

Class是final的,所以它的equals()不能被覆盖。 它的equals()方法从读取的Objectinheritance

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

所以是的,它们对于一个类,或任何不覆盖equals(Object)types都是一样的,

为了回答第二个问题,每个ClassLoader只能加载一个类,并且总是会为给定的完全限定名称提供相同的Class。

是。

看一下Class类的描述 ,注意它从Objectinheritance了equals ,为此读取:

“Object类的equals方法实现了对象上最可能的等价关系;也就是说,对于任何非空引用值x和y,当且仅当x和y引用同一对象(x = = y的值为真)。

是的,因为类的equals(...)的代码如下所示:

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