美文网首页
02_java反射

02_java反射

作者: lww文 | 来源:发表于2020-09-28 17:05 被阅读0次


    反射:将类的各个组成部分封装为其他 对象 这就是反射机制

    好处:

    1:在程序运行过程中操作这写对象  例如:idea 我们可以快速知道 类中的方法

     2:解耦 填好 程序的可扩展性

    1:获取class 对象的方式

    1;Class.forname("全类名")

     1.1:多用于配置文件 将类名配置在文件中 加载力

    2:通过类名的属性获取  类名.class

    2.1: 多用于参数传参

    3:对象.getClass()  :getClass()在obect中定义的

    3.1 多用于字节码对象获取

    结论:

    同一个字节码文件(*.class)在一次程序运行过程中 只会被加载一次 不论通过哪一种 方式获取class 对象都是一个

    =======================

    2;Class对象功能

    1:获取成员变量们

      1.1getFields()获取所有public  修饰的成员变量

      1.2getField(string name)获取某个  public  修饰的 成员变量

      1.3:getDeclaredFields()获取所有的成员变量 不考虑修饰符

      1.4:getDeclaredField(string name)

    2;获取构造方法们

      2.1" getConstrusctors()

      2.2   getConstrusctor(类名)

     2.3   getDeclaredConstrusctors()

     2.4 2.3   getDeclaredConstrusctor(类名)

    3:获取成员方法们

    3.1 getMehods();

    3.2 getMehod(string f方法名,类名);

    3.3 getDeclaredMehods()

    3.3 getDeclaredMehod (string f方法名,类名)

    4:获取类名

    getName();

    =============

    Field 成员变量

    操作:   修饰的 成员变量

    obj:一般都是 Field所属的类的 类对象

     1:设置值: void set(Object obj,Object value)

     2:   获取值  get(Object obj)

    3;忽略访问对象修饰符安全检查  setAccessible(true)  暴力反射

    操作:   获取所有的成员变i量

    如果获取的是 私有修饰符的 成员变量 需要 忽视修饰符的安全检查

    setAccessible(true)  暴力反射

    =============

    Construsctor :获取构造方法

    操作

    1:创建 对象  new instance(Object ...)

    如果构造函数中需要参数   (string name,int age)等等参数

    在使用反射创建构造函数 需要传递 参数的类型的class l例如:

    String.class, int.class

    ===============

    Method 方法对象

    1:执行方法  method.invok(Object ob, Object...args)

    2:获取方法名称  

    method.getName();

    案例1

    创建配置 文件

    2:加载配置文件获取信息  3:使用反射执行方法

    相关文章

      网友评论

          本文标题:02_java反射

          本文链接:https://www.haomeiwen.com/subject/gvmduktx.html