首页 > 编程 > Java > 正文

java使用反射给对象属性赋值的两种方法

2019-11-06 07:10:58
字体:
来源:转载
供稿:网友

java反射无所不能,辣么,怎么通过反射设置一个属性的值呢? 主程序:

/** * @author tengqingya * @create 2017-03-05 15:54 */public class TestReflectSet { PRivate String readOnly; public String getReadOnly() { return readOnly; } public void setReadOnly( String readOnly ) { System.out.println("set"); this.readOnly = readOnly; } }

方法1:

TestReflectSet t = new TestReflectSet(); Field f = t.getClass().getDeclaredField("readOnly"); f.setaccessible(true); f.set(t, "test"); System.out.println(t.getReadOnly());

以上方法得到一个类的Field 属性,然后设置可见性,然后设置了一个值,最后打印 方法2:

Method setReadOnly = t.getClass().getMethod("setReadOnly", String.class); String s ="test2"; setReadOnly.invoke(t,s); System.out.println(t.getReadOnly());

最后的打印结果: 调用方法一 test 调用方法二 set test2 也就是说,第一种方法,没有调用属性的set方法就完成了赋值,但是第二种方法,是通过调用属性的set方法来完成赋值。 所以,如果想在程序中改变程序的属性的值的同时还想做一些额外的事情,可以将这些事情写到set方法中并使用第二种方法哦················


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表