• 反射


    ava 反射机制

    class=class.forName(“”)

    class= aa.getClass();    user aa=new user();

    class=user.class;

    报名.类名$内部类

    Class<?> clazz = Class.forName("test.aa$b");

    实例化:

    Class a=Class.forName("Reflection.Ship");

    Class[] c={String.classint.class};    //new Class[] {  String.class, String.class }  

    Constructor con=a.getConstructor(c);    con.setAccessible(true); 

    Object obj=con.newInstance("asd",12);

    c.newInstance(new Outer())  实例化内部类要加类的实例化

    获取方法,变量:

    c.getDeclaredFields(); 

     fields[i].getType() == By.class

     fields[i].getName()  拿名

     fields[i].get(aa);   拿值  //实例化的aa

    c.getDeclaredMethods();

    执行方法:

    clazz = Class.forName(className);

    Object o = clazz.newInstance();

    Method[] ms = clazz.getDeclaredMethods();

                for (Method m : ms) {

                    if (m.getName().equals(methodName)) {

                        m.invoke(o);

                    }

                }

    执行方法返回值:

    Class cls = Class.forName("com.common.page."+classname); 

    Method m = cls.getDeclaredMethod("By",String.class)

    String aa= m.invoke(cls.newInstance(),value);

    修改变量:

    clazz = Class.forName(className);

    Field field=clazz.getDeclaredField(filedName);

    field.setAccessible(true);         

    field.set(filedName,changed);

  • 相关阅读:
    调用微信扫一扫接口
    Http错误代码解释
    php goto的用法
    Yii2.0-生成二维码实例
    飞鹅WiFi打印机配置,php调用接口
    HTML5 为什么只需要写 <!DOCTYPE HTML>?
    VueJs之 v-bind
    react 组件导出
    前端代码规范
    git与github的文件推送
  • 原文地址:https://www.cnblogs.com/season-xie/p/5330937.html
Copyright © 2020-2023  润新知