您的位置:首页 > 编程语言 > Java开发

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

2016-04-26 20:43 696 查看
//------------------------------------------------我是代码的分割线

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

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

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

import java.lang.reflect.Field;

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


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

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

public class ToolDemo {
public static void main(String[] args) throws NoSuchFieldException,
SecurityException, IllegalArgumentException, IllegalAccessException {
Person p = new Person();

Tool tool = new Tool();
tool.setProperty(p, "name", "java");
tool.setProperty(p, "age", 20);

System.out.println(p);
System.out.println("---------");
Dog d = new Dog();
tool.setProperty(d, "sex", '男');
tool.setProperty(d, "price", 12.34f);
System.out.println(d);
}
}
class Dog{
private char sex;
float price;

public String toString() {
return sex + "---" + price;
}
}
class Person {

private String name; // 此处name是私有的,外界是无法访问的。
public int age;

@Override
public String toString() {
return name + "---" + age;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: