黑马程序员技术交流社区
标题:
关于反射javabean类,创建实例对象
[打印本页]
作者:
乔海伦
时间:
2014-12-26 21:46
标题:
关于反射javabean类,创建实例对象
package com.itheima;
public class Person{
private String name;
private int age;
Person(){
}
Person(String name,int age){
super();
this.name=name;
this.age=age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
package com.itheima;
import java.lang.reflect.*;
public class Test7 {
public static void main(String[] args){
try{
//创建Person类字节码对象
Class<Person> c = Person.class;
System.out.println(c.getName());
//通过字节码得到Person的有参构造函数,创建它的实例对象,并进行初始化
Person person = c.getConstructor(String.class, int.class).newInstance("zhangsan",25);
//使用反射获得名为setName的方法,并给这个方法传递参数进行变量赋值
Method setNameMethod = c.getMethod("setName", String.class);
setNameMethod.invoke(person, "lisi");
//获取名为“age”的属性,并用暴力反射对该字段进行设置。
Field fieldAge = c.getDeclaredField("age");
//取消fieldAge字段的权限检查
fieldAge.setAccessible(true);
//把person对象的fieldAge字段值设置为30
fieldAge.set(person, 30);
//5、打印name和age的值
System.out.println("name=" + person.getName());
System.out.println("age=" + person.getAge());
}
catch(Exception e){
e.printStackTrace();
}
}
}
很郁闷!为什么总出现这种问题,各位大神!!
java.lang.NoSuchMethodException: com.itheima.Person.<init>(java.lang.String, int)
at java.lang.Class.getConstructor0(Class.java:2706)
at java.lang.Class.getConstructor(Class.java:1657)
at com.itheima.Test7.main(Test7.java:18);
作者:
moto风暴
时间:
2014-12-26 21:46
你的Person类中的构造函数前面要加上public,这样才能调用构造函数的。
作者:
乔海伦
时间:
2014-12-26 22:30
各位大神,忽略忽略!!
作者:
乔海伦
时间:
2014-12-27 16:29
moto风暴 发表于 2014-12-27 10:59
你的Person类中的构造函数前面要加上public,这样才能调用构造函数的。
谢谢,后知后觉了!!!!:D
作者:
小平
时间:
2015-1-1 17:30
Class反射基础
作者:
阿奔
时间:
2015-1-13 21:30
构造函数默认情况下,权限修饰符为private,因为你解剖这个构造器的时候,使用的是得到public类型的构造方法,所以会抛出找不到这个方法的异常,可以使用getDeclaredConstructor();或者将person类中带参构造函数加上public。
作者:
yanqiuqiu
时间:
2015-1-28 09:04
person的权限不够。在前面加个public
作者:
邓士林
时间:
2015-2-7 20:33
怒赞一个,
作者:
IT未来
时间:
2015-3-11 13:32
赞一个我。。。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2