一:什么是反射
Java反射是Java被视为动态(或准动态)语言的一个关键性质。JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制。
二:反射的功能
Java反射机制提供如下功能:
在运行时判断任意一个对象所属的类
在运行时构造任意一个类的对象
在运行时判段任意一个类所具有的成员变量和方法
在运行时调用任一个对象的方法
在运行时创建新类对象在使用Java的反射功能时,基本首先都要获取类的Class对象,再通过Class对象获取其他的对象
1)获取Class对象的三种方式
//一:通过全限定名获取类对象 Class userClass = Class.forName("com.reflect.domain.User"); System.out.println(userClass); //二:通过类直接获取类对象 Class userClass1 = User.class; System.out.println(userClass1); //三:通过类实例获取对象 User user = new User(); Class userClass2 = user.getClass(); System.out.println(userClass2); System.out.println(userClass.equals(userClass1)); System.out.println(userClass1.equals(userClass2));
运行的结果如下:
注意:在 JVM 中一个类只会有一个 Class 实例,即我们对上面获取的 userClass1,userClass2 ,userClass 进行 equals 比较结果都为true2) Class对象api
Class api: https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html
常用的api有一下几个:
getName():获得类的完整名字。
getFields():获得类的public类型的属性。