我必须将一个Class
对象与一个预定义的类列表进行比较.
使用安全==
还是应该使用equals
?
if (klass == KlassA.class) {
} else if (klass == KlassB.class) {
} else if (klass == KlassC.class) {
} else {
}
Run Code Online (Sandbox Code Playgroud)
注意:我不能使用instanceof
,我没有对象,我只是拥有该Class
对象.我(错误)在这种情况下使用它就像一个枚举!
rob*_*nst 28
java.lang.Class
不会覆盖equals
方法java.lang.Object
,实现方式如下:
public boolean equals(Object obj) {
return (this == obj);
}
Run Code Online (Sandbox Code Playgroud)
所以a == b
是相同的a.equals(b)
(除非a
是null).
我不确定这是否适合您的具体情况,但您可以尝试Class.isAssignableFrom(Class)。
KlassA.class.isAssignableFrom(klass)
Run Code Online (Sandbox Code Playgroud)