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 }
  • 相关阅读:
    hdu4277 暴力
    hdu4271 Find Black Hand 2012长春网络赛E题 最短编辑距离
    poj3356 字符串的最小编辑距离 dp
    HDU4267 A Simple Problem with Integers 线段树/树状数组
    树链剖分 模版
    SPOJ375 Query on a tree 树链剖分
    Orz_panda cup I题 (xdoj1117) 状压dp
    27号的十道离线线段树
    The 2015 "Orz Panda" Cup Programming Contest
    codeforces #274 C. Riding in a Lift dp+前缀和优化
  • 原文地址:https://www.cnblogs.com/LZL-student/p/5967217.html
Copyright © 2011-2022 走看看