zoukankan      html  css  js  c++  java
  • JAVA反射reflect常用方法

    Reflect笔记

    基础

    结构信息

    • Class c = Class.forname("类的名称"); 从类的名称创建类对象。
    • class.getName(); 获得类的名称 会带上包名,例如com.java.test.App
    • class.getSimpleName(); 获得类的简单名称,例如App
    • class.getInterfaces(); 获得类的接口,是一个数组,可以通过Arrays.toString()输出;
    • class.getModifers(); 获得修饰符,得到一个代表修饰符的数字;
    • 可以通过Modifier.toString(数字) 得到字符串,如public final

    成员变量

    • Filed[] f = class.getFileds(); 获取所有public属性
    • class.getDeclaredFileds() 获取所有权限的属性
    • f.getName 获得属性名字
    • f.getType 获得属性类型

    构造方法

    • class.getConstructors() 所有构造方法
    • class.getDeclaredConstructors() 所有权限的构造
    • class.getConstructor() 指定的构造方法
    • class.getDeclaredConstructor() 所有指定构造方法
    • 通过constructor.newInstance()构造新对象

    成员方法

    • getMethods() 获得所有方法
    • getname(); 获得名字
    • getModifiers(); 获得修饰符
    • getReturnTypes(); 获得返回类型

    操作

    使用反射操作属性(不安全)

    1. 获取类的完整路径字符串
    2. 根据类的完整路径获得类对象
    3. 使用set(obj,值)进行对相应属性的修改
    4. f.getXxx(obj) 获得obj该属性的值

    使用Method执行方法

    m.invoke(obj) 具有返回值
    invoke 简单点来说,就是将一个方法(method)运用到具体的类上

    比如我有一个类Person,中间有属性age
    得到PersongetAge方法后
    使用f.invoke(person_1,Object[])来对这个具体的对象使用方法

  • 相关阅读:
    吴恩达读书笔记【5】-流水线与端到端
    标准与扩展ACL 、 命名ACL
    VLAN间通讯 、 动态路由RIP
    HSRP热备份路由协议 、 STP生成树协议
    VLAN广播域划分
    应用层
    包格式及IP地址 、 网络层协议及设备
    传输层 、 应用层
    数据链路层解析 、 交换机基本配置
    网络基础3
  • 原文地址:https://www.cnblogs.com/lizinuo/p/15361474.html
Copyright © 2011-2022 走看看