Reflect
- 在java中“万事万物皆是对象”,也就是万事万物都是各种各样的类,而对于类而言又可以进一步的抽象成为一类,来描述各种类,其一个实例对象就是一种类。反射(reflect)就是把一个类的各个成员映射成相对应的类型,我们通过方法可以得到一种类的字节码文件,在通过字节码文件来实现对这一种类进行操作比如实例化、修改属性,调用方法等。
- 获取字节码的三种方式:可以通过类,或者是一个类的一个具体实例对象,也可以通过那个类(描述类的那个类)方式如下:
Class c = Class.forName("com.zrm.Student");//通过类类
Class c1 = Student.class;//通过类名
Class c2 = student.getClass();//类的实例对象
package com.zrm;import java.lang.reflect.Constructor;import java.rmi.StubNotFoundException;public class ReFlect1 { public static void main(String[] args) throws Exception { Student student = new Student(); //获取反射的三种方式 Class c = Class.forName("com.zrm.Student");//通过类类 Class c1 = Student.class;//通过类名 Class c2 = student.getClass();//类的实例对象 //在获取到字节码后可以通过方法得到这个类里面成员所对应的类型 /* 对于一个类的描述分为四个部分: package对应的Package 属性对应的Field 构造方法对应的Construct method对应的Method */ //得到Student类的构造方法 Constructor constructor = c.getConstructor();//无参构造方法 //通过构造方法来实例化一个对象 Student student1 = (Student) constructor.newInstance(); System.out.println(student); //--------------------------有参构造 Constructor constructor1 = c1.getConstructor(String.class, int.class, int.class); Student student2 = (Student) constructor1.newInstance("fjx", 18, 100); System.out.println(student2); }}
来源:博客园
作者:26417
链接:https://www.cnblogs.com/zrmj/p/11432811.html