Java Class cast() 方法



描述

Java Class cast() 方法将对象强制转换为由该 Class 对象表示的类或接口。

声明

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

public T cast(Object obj)

参数

obj − 要强制转换的对象。

返回值

此方法在强制转换后返回对象,如果 obj 为 null,则返回 null。

异常

ClassCastException − 如果对象不为 null 且不可分配给类型 T。

将对象强制转换为类的示例

以下示例显示了 java.lang.Class.cast() 方法的用法。在这个程序中,我们创建了一个 ClassDemo 的实例,然后使用 getClass() 方法获取并打印实例的类。我们有两个类 A 和 B,其中 B 扩展 A。现在创建 A 和 B 的实例,然后使用 cast() 方法将 B 的实例强制转换为 A。

package com.tutorialspoint;

class A {
   public static void show() {
      System.out.println("Class A show() function");
   }
}

class B extends A {
   public static void show() {
      System.out.println("Class B show() function");
   }
}

public class ClassDemo {

   public static void main(String[] args) {

      ClassDemo cls = new ClassDemo();
      Class c = cls.getClass();      
      System.out.println(c);  

      Object obj = new A();        
      B b1 = new B();
      b1.show();

      // casts object
      Object a = A.class.cast(b1);

      System.out.println(obj.getClass());
      System.out.println(b1.getClass());
      System.out.println(a.getClass());               
   }
} 

输出

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

class com.tutorialspoint.ClassDemo
Class B show() function
class com.tutorialspoint.A
class com.tutorialspoint.B
class com.tutorialspoint.B

强制转换对象到类时遇到异常的示例

以下示例显示了 java.lang.Class.cast() 方法的用法。在这个程序中,我们创建了一个 ClassDemo 的实例,然后使用 getClass() 方法获取并打印实例的类。我们有两个类 A 和 B。现在创建 A 和 B 的实例,然后使用 cast() 方法将 B 的实例强制转换为 A。由于 B 与 A 不兼容,因此会引发异常。

package com.tutorialspoint;

class A {
   public static void show() {
      System.out.println("Class A show() function");
   }
}

class B {
   public static void show() {
      System.out.println("Class B show() function");
   }
}

public class ClassDemo {

   public static void main(String[] args) {

      ClassDemo cls = new ClassDemo();
      Class c = cls.getClass();      
      System.out.println(c);  

      Object obj = new A();        
      B b1 = new B();
      b1.show();

      // casts object
      Object a = A.class.cast(b1);

      System.out.println(obj.getClass());
      System.out.println(b1.getClass());
      System.out.println(a.getClass());               
   }
} 

输出

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

class com.tutorialspoint.ClassDemo
Class B show() function
Exception in thread "main" java.lang.ClassCastException: Cannot cast com.tutorialspoint.B to com.tutorialspoint.A
	at java.base/java.lang.Class.cast(Class.java:4067)
	at com.tutorialspoint.ClassDemo.main(ClassDemo.java:28)
java_lang_class.htm
广告