zoukankan      html  css  js  c++  java
  • 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 }
  • 相关阅读:
    多级弹出菜单jQuery插件ZoneMenu
    jquery投色子动画
    推荐一个内容滚动jquery插件
    足球宝贝来了,任你旋转(CSS3)
    jQuery切换网页皮肤保存到Cookie实例
    程序员用HTML5给女朋友制作的3D相册
    jquery模拟LCD 时钟
    jQuery刮彩票兑奖效果
    滚动变色的文字js特效
    jQuery实现右上角点击后滑下来的竖向菜单
  • 原文地址:https://www.cnblogs.com/fuck1/p/5436557.html
Copyright © 2011-2022 走看看