zoukankan      html  css  js  c++  java
  • reflect 反射

    源码地址:  [](https://files.cnblogs.com/files/paidaxing7090/reflect.zip)
    
    
    reflect  反射
    1. reflect 反射,理解成“透视”会更准确一点
      文本配置文件 config.txt
      day1901.A;a
      day1901.B;b
      day1901.C;c
      day1901.D;d
      使用‘类对象’来执行反射
      反射获得一个类的定义信息
      反射创建对象
      反射调用成员变量、方法
       
    2.获得类对象的三种方式
      A.class
      Class.forname("day1901.A")
      a.getClass();
      如果类未加载,要先加载才能获取。
    3.类对象获得包名、类名   Class<?> c=  Class.forName(s);
      c.getPackage().getName();  //包名
      c.getName(); //类名
      c.getSimpleName();//简写类名
    4.获得成员变量的定义信息
      getFields()  //获得多个成员变量
      getDeclaredfields() //本来定义的所有变量 包括私有,不含有继承
      getField(变量名) 
      getDeclaredfield(变量名)
    5.获得构造方法信息
      getConstructors() //获得可见构造方法
      getDeclaredConstructors() 获得所有构造方法 
      getConstructor(参数列表)
      getDeclaredConstructor(int.class , String.class) 获得参数列表为相应对象的 方法
    6.获得方法的定义信息
      getMethods() 可见的方法,包含继承
      getDeclaredMethods() // 本类定义的方法,包含私有,不包含继承
      getMethod(方法名,int.class,String.class) //指定方法名+参数列表类型
      getDeclaredMethod(方法名,int.class,String.class )
    7.反射创建对象
      通过“类对象”的反射操作,(类对象在方法区加载)
      执行无参构造
      Object obj = c.newInstance(); //新建c类型的对象
      执行有参构造
      Constructor t = c.getConstructor(参数类型列表 int.class,String.class                 )   //获得构造方法
      Object obj =  t.newInstance(666,"AAA") ;//通过构造方法的反射操作,来新建对象
    8.反射调用成员变量
      获得成员变量
      field f = c.getDeclaredfield("age"); //封装了成员信息 和 反射操作
      f.set(对象,21); 给指定对象 的age变量 赋值。静态变量 对象 给null
      int i= (int) f.get(对象 ); // 获取指定对象的age 的object对象, 需要强制类型转换
      f.setAccssible(true)  ;//可使私有变量也可以被访问。
    9.反射调用成员方法
      Method   t=c.getMethod(方法名,int.class,String.class) 获得方法(定义信息+反射操作)
      t.setAccssible(true) ; //使私有方法可被调用
      t.invoke(对象,int.class  1 ,String.class  "aaa") //调用方法,需要指定对象 ,添加参数列表
      t.invoke(null ) 静态方法。  有返回值得到返回值,没有得到null
    10.反射是框架的底层实现原理
    
  • 相关阅读:
    NFine框架JqGrid导出选中行为Excel实现方法
    NFine框架全选checkBox列错位
    VS 在文件中查找替换界面死掉。
    WCF各个Service之间共享数据
    Devexpress Winform 使用MVVM
    FontAwesome图标选择器
    Xampp PHPStorm XDebug配置
    SDL 库 无法解析的外部符号 __imp__fprintf
    ffmpeg mp4转yuv
    JAVA环境变量配置
  • 原文地址:https://www.cnblogs.com/paidaxing7090/p/14845216.html
Copyright © 2011-2022 走看看