zoukankan      html  css  js  c++  java
  • java 27

    标题的意思是:

      通过反射写一个类,类中有个方法。该方法可以设置某个类中的某个属性(构造方法,成员变量,成员方法)为特定的值

    代码:

      

     1     // 该方法的参数列表是一个类的 类名、成员变量、给变量的赋值
     2     public void setProperty(Object obj, String PropertyName, Object value)
     3             throws NoSuchFieldException, SecurityException,
     4             IllegalArgumentException, IllegalAccessException {
     5 
     6         // 获取obj类的字节文件对象
     7         Class c = obj.getClass();
     8 
     9         // 获取该类的成员变量
    10         Field f = c.getDeclaredField(PropertyName);
    11 
    12         // 取消语言访问检查
    13         f.setAccessible(true);
    14 
    15         // 给变量赋值
    16         f.set(obj, value);
    17 
    18     }

    测试类:

      

     1 public static void main(String[] args) throws NoSuchFieldException,
     2             SecurityException, IllegalArgumentException, IllegalAccessException {
     3 
     4         // 创建Person类的对象
     5         Person p = new Person();
     6         // 私有成员变量无法直接访问
     7         // 这时候就通过刚刚写的Tool类来直接调用
     8         Tool t = new Tool();
     9         // 通过Tool的方法直接更改私有成员变量name
    10         t.setProperty(p, "name", "张三");
    11         // 更改未定义类型成员变量
    12         t.setProperty(p, "age", 13);
    13         // 更改公共成员变量
    14         t.setProperty(p, "sex", '男');
    15         System.out.println(p);
    16 
    17         // 其实除了私有成员变量,其它的都可以通过以前的方法赋值
    18     }
    19 
    20 }
    21 
    22 class Person {
    23     // 该类有私有成员变量,未定义类型成员变量,公共成员变量
    24     private String name;
    25     int age;
    26     public char sex;
    27 
    28     @Override
    29     public String toString() {
    30         return name + "--" + sex + "--" + age;
    31     }
    32 
    33 }
  • 相关阅读:
    2019 SDN上机第1次作业
    关键路径法(Critical Path Method, CPM)
    iOS 一个项目添加多个TARGET
    为图形处理器提供数据
    OpenGL全流程详细解读
    小技巧之padding-bottom实现等比例图片缩放
    Mac 显示隐藏文件
    mac 下修改 jenkins 端口以及Jenkins的启动、关闭与更新
    Mac上Charles抓包iOS的https请求
    python自动循环重启android系统
  • 原文地址:https://www.cnblogs.com/LZL-student/p/5967217.html
Copyright © 2011-2022 走看看