Java等于一个类。 和.equals ==一样
我们可以做一个==
Class
variables而不是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类的描述 ,注意它从Object
inheritance了equals
,为此读取:
“Object类的equals方法实现了对象上最可能的等价关系;也就是说,对于任何非空引用值x和y,当且仅当x和y引用同一对象(x = = y的值为真)。
是的,因为类的equals(...)
的代码如下所示:
public boolean equals(Object obj) { return (this == obj); }