Java Class isAssignableFrom() 方法



描述

Java Class isAssignableFrom() 方法确定此 Class 对象所表示的类或接口是否与指定的 Class 参数所表示的类或接口相同,或者是否是其超类或超接口。

声明

以下是java.lang.Class.isAssignableFrom() 方法的声明

public boolean isAssignableFrom(Class<?> cls)

参数

cls − 要检查的 Class 对象。

返回值

此方法返回一个布尔值,指示类型为 cls 的对象是否可以赋值给此类的对象。

异常

NullPointerException − 如果指定的 Class 参数为 null。

不可赋值类的赋值状态示例

以下示例演示了 java.lang.Class.isAssignableFrom() 方法的用法。在这个程序中,我们创建了一个 ClassDemo 的实例,然后使用 getClass() 方法检索实例的类。然后检索 ClassDemo 子类的类,并使用 isAssignableFrom() 检查并打印 SubClass 的赋值状态。

package com.tutorialspoint;

public class ClassDemo {

   public static void main(String[] args) {

      try {
         ClassDemo cls = new ClassDemo();
         Class c = cls.getClass();

         // class object associated with BaseClass
         Class subClass = SubClass.class;

         // checks whether BaseClass is assignable from ClassDemo
         boolean retval = subClass.isAssignableFrom(c);
         System.out.println("Return Value = " + retval);
      } catch(Exception e) {
         System.out.println(e.toString());
      }
   }
}

// base class
class SubClass extends ClassDemo {
   public SubClass() {
      // no argument constructor
   }
}

输出

让我们编译并运行上面的程序,这将产生以下结果:

Return Value = false

可赋值类的赋值状态示例

以下示例演示了 java.lang.Class.isAssignableFrom() 方法的用法。在这个程序中,我们创建了一个 ClassDemo 的实例,然后使用 getClass() 方法检索实例的类。然后检索 ClassDemo 子类的类,并使用 isAssignableFrom() 检查并打印 ClassDemo 的赋值状态。

package com.tutorialspoint;

public class ClassDemo {

   public static void main(String[] args) {

      try {
         ClassDemo cls = new ClassDemo();
         Class c = cls.getClass();

         // class object associated with BaseClass
         Class subClass = SubClass.class;

         // checks whether ClassDemo is assignable from BaseClass
         boolean retval = c.isAssignableFrom(subClass);
         System.out.println("Return Value  = " + retval);
      } catch(Exception e) {
         System.out.println(e.toString());
      }
   }
}

// base class
class SubClass extends ClassDemo {
   public SubClass() {
      // no argument constructor
   }
}

输出

让我们编译并运行上面的程序,这将产生以下结果:

Return Value = true
java_lang_class.htm
广告