reflect

匿名 (未验证) 提交于 2019-12-02 23:56:01

Reflect

  1. 在java中“万事万物皆是对象”,也就是万事万物都是各种各样的类,而对于类而言又可以进一步的抽象成为一类,来描述各种类,其一个实例对象就是一种类。反射(reflect)就是把一个类的各个成员映射成相对应的类型,我们通过方法可以得到一种类的字节码文件,在通过字节码文件来实现对这一种类进行操作比如实例化、修改属性,调用方法等。
  2. 获取字节码的三种方式:可以通过类,或者是一个类的一个具体实例对象,也可以通过那个类(描述类的那个类)方式如下:

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);    }}
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!