• java中使用反射做一个工具类,来为指定类中的成员变量进行赋值操作,使用与多个类对象的成员变量的赋值。


    //------------------------------------------------我是代码的分割线

    // 首选是一个工具类,在该工具类里面,定义了一个方法,public void setProperty (Object obj, String propertyName, Object value)

    // Object obj:所要使用的字节码class对象,String propertyName:所要获取对象的propertyName成员变量,Object value :给对象的成员变量赋值为指定的值--->value

    // 就介绍到这里,直接上代码:首选是反射的工具类

     1 import java.lang.reflect.Field;
     2 
     3 public class Tool {
     4     public void setProperty(Object obj, String propertyName, Object value)
     5             throws NoSuchFieldException, SecurityException,
     6             IllegalArgumentException, IllegalAccessException {
     7         // 根绝对象获取字节码文件
     8         Class c = obj.getClass();
     9         // 获取该对象的propertyName成员变量
    10         Field field = c.getDeclaredField(propertyName);  //注意你是通过参数来获取,不许加双引号“”
    11         // 取消访问检查
    12         field.setAccessible(true);
    13         // 给对象的成员变量赋值为指定的值--->value
    14         field.set(obj, value);
    15     }
    16 }

    //-------------------------------------------

    //下面的是测试类,就是使用该工具类,经参数传递过去。。。

     1 public class ToolDemo {
     2     public static void main(String[] args) throws NoSuchFieldException,
     3             SecurityException, IllegalArgumentException, IllegalAccessException {
     4         Person p = new Person();
     5 
     6         Tool tool = new Tool();
     7         tool.setProperty(p, "name", "java");
     8         tool.setProperty(p, "age", 20);
     9 
    10         System.out.println(p);
    11         System.out.println("---------");
    12         Dog d = new Dog();
    13         tool.setProperty(d, "sex", '男');
    14         tool.setProperty(d, "price", 12.34f);
    15         System.out.println(d);
    16     }
    17 }
    18 class Dog{
    19     private char sex;
    20     float price;
    21     
    22     public String toString() {
    23         return sex + "---" + price;
    24     }
    25 }
    26 class Person {
    27 
    28     private String name; // 此处name是私有的,外界是无法访问的。
    29     public int age;
    30 
    31     @Override
    32     public String toString() {
    33         return name + "---" + age;
    34     }
    35 }
  • 相关阅读:
    Firebase REST API
    python 获取一个网页里的a 标签
    python 抓一下 循环的访问也可以
    mezzanine 历险记
    django cms 5月第一弹
    数据中心虚拟化技术
    linux ftp 服务器 ,web 服务器 配置
    linux DHCP 服务器
    linux DNS 服务器 配置
    lib.form.php
  • 原文地址:https://www.cnblogs.com/fuck1/p/5436557.html
Copyright © 2020-2023  润新知