比较Class对象

ret*_*eto 21 java

我必须将一个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).


jt.*_*jt. 5

我不确定这是否适合您的具体情况,但您可以尝试Class.isAssignableFrom(Class)

KlassA.class.isAssignableFrom(klass)
Run Code Online (Sandbox Code Playgroud)