java.lang.Class类是反射机制操作的起源,为了适应不同情况下的反射机制的操作,java提供有三种Class类对象实例化方式。
方式一:利用Object类中提供getClass()方法获取实例化对象
import java.util.Date;
public class JavaReflectDemo437A {
public static void main(String[] args) {
//【操作特点】需要获取一个类的实例化对象才可以获取Class类实例
Date date=new Date();
Class<?> clazz=date.getClass(); //获取Class类实例化对象
System.out.println(clazz);
}
}
执行结果
class java.util.Date
方式二:使用“类.class”形式获取指定类或接口的Class实例化对象
public class JavaReflectDemo437B {
public static void main(String[] args) {
//【操作特点】直接通过一个类的完整名称可以获取Class类的实例,需要编写import或完整类名称
Class<?> clazz=Member.class;
System.out.println(clazz);
}
}
class Member{}
执行结果
class com.lxh.seventeenchapter.Member
方式三:使用Class类内部提供的forName()方法根据类的完整名称获取实例化对象
Class实例化方法:public static Class<?> forName(String className) throws ClassNotFoundException;
public class JavaReflectDemo437C {
public static void main(String[] args) throws ClassNotFoundException {
//【操作特点】通过名称字符串(包,类)可以获取Class类实例,可以不使用import导入
Class<?> clazz=Class.forName("com.lxh.seventeenchapter.Member");
System.out.println(clazz);
}
}
执行结果
class com.lxh.seventeenchapter.Member