Java-比较类?

Java-比较类?,java,android,class,comparison,Java,Android,Class,Comparison,我如何比较两门课 尽管类是MyClass的类型,但以下if语句从未通过: public void(Class class) { if (class == MyClass.class){ } } 测试clazz是否是MyClassdo的(子)类型 MyClass.class.isAssignableFrom(clazz) 来自javadoc的 确定此类对象表示的类或接口是否与指定的类参数表示的类或接口相同,或者是其超类或超接口。如果是,则返回true;否则返回false。如果该类

我如何比较两门课

尽管类是MyClass的类型,但以下if语句从未通过:

public void(Class class) {
   if (class == MyClass.class){

   }
}

测试
clazz
是否是
MyClass
do的(子)类型

MyClass.class.isAssignableFrom(clazz)
来自javadoc的

确定此类对象表示的类或接口是否与指定的类参数表示的类或接口相同,或者是其超类或超接口。如果是,则返回true;否则返回false。如果该类对象表示基元类型,则如果指定的类参数正是该类对象,则该方法返回true;否则返回false

具体地说,此方法测试指定类参数表示的类型是否可以通过标识转换或加宽引用转换转换为此类对象表示的类型。有关详细信息,请参阅Java语言规范第5.1.1节和第5.1.4节

所以

是true,因为每个
字符串
也是一个
对象
但是

String.class.isAssignableFrom(Object.class)
为false,因为并非所有
对象
s都是
字符串
s


名称“
isAssignableFrom
”来自以下事实:

Class1 x = (Class2) null;
只有当

Class1.class.isAssignableFrom(Class2.class)
也就是说,我们可以分配一个静态类型为
Class1的字段或变量
一个值,该值来自一个静态类型为
Class2
的表达式

if (clazz.equals(MyClass.class)) {

}

顺便说一句,class是一个保留字。

您可以使用
=
.equals()
来比较
class
对象

例如:

class MyClass
{
    public static void main (String[] args) throws java.lang.Exception
    {
        MyClass m = new MyClass();
        if (MyClass.class == m.getClass())
        {
            System.out.println("it worked");
        }
    }
}

演示:

您可以使用
instanceof
操作符检查实例是否属于特定类或其子类

class MyClass{}

class SubClass extends MyClass{}

public static void main(String args[]) {

    SubClass object = new SubClass();

    if (object instanceof MyClass) {
        System.out.println("It works, too");
    }
}

我一点也不相信它能编译。。。另一方面,如果它只是伪代码,那么我看不到任何奇怪的东西。你能粘贴实际代码吗?
klass
也是一个常见的变量名称。
final Class SAN_DIEGO
class MyClass{}

class SubClass extends MyClass{}

public static void main(String args[]) {

    SubClass object = new SubClass();

    if (object instanceof MyClass) {
        System.out.println("It works, too");
    }
}