zoukankan      html  css  js  c++  java
  • 关于反射学习

    Java中发射机制非常重要,在框架中使用频繁

    发射使用流程:

    1、通过Class.classforName(“配置文件中的路径”); 获取 字节码文件

    Class clazz = Class.forName("Reflect.Person");

    2、通过 clazz.getConstructor(参数类型.class);获得 构造函数

    Constructor con =  clazz.getConstructor(null); //(构造函数参数类型)

    使用 .newInstance(null);构造对象

    p = (Person) con.newInstance(null); //给对象的参数

    3、通过 clazz.getMethod(“方法名”,参数类型.class);获得 成员方法

    Method method = clazz.getMethod("getName", null);//获取 getName();方法

    method.incoke(“对象”,传参);

    method.invoke(p, null);

    4、通过clazz.getDeclaredMethod(“方法名”,参数类型.class);获得 私有方法

    Method method = clazz.getDeclaredMethod("printTo", String.class);

            通过method.setAccessible(true);设置访问权限

    method.setAccessible(true);            //暴力访问类私有方法

    method.invoke(p,"xiehe");

    5、通过clazz.getField(“字段名”);获取类的 字段属性

    Field field = clazz.getField("add");//获得字段域

    通过field.get(对像);获得字段值

    String value = (String) field.get(p);

    6、通过clazz.getDeclaredField(“字段名”);获得私有 字段属性

    Field field = clazz.getDeclaredField("num");

    field.setAccessible(true); //设置访问权限

    int value = (int) field.get(p); //获取值

  • 相关阅读:
    sublime text3在指定浏览器上本地服务器(localhost)运行文件(php)
    关于Content-Type的问题
    为什么开发要用一个大的背景图
    2017-04-17
    我的第一篇博客
    b站计算机网络谢希仁6网络层续3
    b站计算机网络谢希仁6网络层续2
    b站计算机网络谢希仁6网络层续1
    b站操作系统2.10互斥
    b站操作系统2.9并发
  • 原文地址:https://www.cnblogs.com/he-shao/p/5848171.html
Copyright © 2011-2022 走看看