java中的反射,知道类名创建类,还可以设置私有属性的值

王朝学院·作者佚名  2016-08-27
窄屏简体版  字體: 小  |  中  |  大  |  超大  

刚刚学到了反射,感觉反射的功能好强大,所以想写篇博客记录下自己的学习成果。

利用反射来创建对象。

Class c1=Class.forName("test.Person");//通过类名来创建类,这里test.person只是一个类名,。这个person类代码在//本文最下方/***情况1:调用无参的构造方法来创建对象*/Person p=c1.newInstance();//这样就创建好了/***情况2:调用有参构造方法*/Constructor cs=c1.getConstructor(String.class,int.class);//括号里面写的是构造方法的参数类型的类化,也就是后面加.class就好了Person p=(Person) cs.newInstance("张三",22);//调用构造方法生成对象

View Code

利用反射来设置私有属性

try{

Class clazz=Class.forName("testPerson");

Person p=(Person) clazz.newInstance();

Field f1=clazz.getDeclaredField("name");

f1.setaccessible(true);//设置是否可以操作私有属性f1.set(p, "wfadf");

System.out.PRintln(f1.get(p));

}catch(Exception e) {//TODO Auto-generated catch blockthrownewRuntimeException(e);

}

Person类代码

packagetest;publicclassPerson {privateString name;privateintage;publicPerson() {

}publicPerson(String name,intage) {this.name =name;this.age =age;

}publicString getName() {returnname;

}/*public void setName(String name) {

this.name = name;

}*/publicintgetAge() {returnage;

}publicvoidsetAge(intage) {this.age =age;

}

}

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航