Java Field.set()向对象的这个Field属性设置新值value
定义
set(Object obj, Object value)
将指定对象变量上此 Field 对象表示的字段设置为指定的新值.
//根据属性名设置它的值 A a = new A(); Field field = a.getClass().getDeclaredField("x"); field.setAccessible(true); field.set(a, 1);
例子
获取属性的属性值并修改属性值
public static void main(String[] args) throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException { Person person = new Person(); person.setName("VipMao"); person.setAge(24); person.setSex("男"); //通过Class.getDeclaredField(String name)获取类或接口的指定属性值。 Field f1 = person.getClass().getDeclaredField("name"); System.out.println("-----Class.getDeclaredField(String name)用法-------"); System.out.println(f1.get(person)); System.out.println("-----Class.getDeclaredFields()用法-------"); //通过Class.getDeclaredFields()获取类或接口的指定属性值。 Field[] f2 = person.getClass().getDeclaredFields(); for (Field field: f2) { field.setAccessible(true); System.out.println(field.get(person)); } //修改属性值 System.out.println("----修改name属性------"); f1.set(person, "Maoge"); //修改后再遍历各属性的值 Field[] f3 = person.getClass().getDeclaredFields(); for (Field fields: f3) { fields.setAccessible(true); System.out.println(fields.get(person)); } }
执行结果:
-----Class.getDeclaredField(String name)用法------- VipMao -----遍历属性值------- VipMao 24 男 ----修改name属性后再遍历属性值------ Maoge 24 男
总结
通过set(Object obj,value)重新设置新的属性值,并且当我们需要获取私有属性的属性值得时候,我们必须设置Accessible为true,然后才能获取。
版权声明:本文为JAVASCHOOL原创文章,未经本站允许不得转载。