黑马程序员技术交流社区
标题:
反射方面问题,我实在是不知道为什么提示没有方法错误
[打印本页]
作者:
z13561291
时间:
2015-11-27 11:34
标题:
反射方面问题,我实在是不知道为什么提示没有方法错误
public static void main(String[] args) throws InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException, NoSuchMethodException, SecurityException, NoSuchFieldException {
//获取Class字节码
Class<Person> c = Person.class;
//调用构造函数创建对象
Person p = c.getConstructor(String.class,int.class).newInstance("zhangsan",20);
//获取方法设置姓名
Method m = c.getMethod("setName", String.class);
//设置姓名为lisi
m.invoke(p, "lisi");
// 获取年龄属性
Field f = c.getDeclaredField("age");
//取消权限
f.setAccessible(true);
//设置年龄
f.set(p, 25);
System.out.println(p);
}
}
class Person{
private String name;
private int age;
Person(){}
Person(String name,int age){
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;
}
}
no.png
(42.08 KB, 下载次数: 25)
下载附件
2015-11-27 11:32 上传
作者:
z13561291
时间:
2015-11-27 12:16
找到了
应该是构造函数没有public的原因。。。。
作者:
小布丁当
时间:
2015-11-27 22:06
赞一个
作者:
Little_jie
时间:
2015-11-28 08:39
学习了,
作者:
yuhongzhen
时间:
2015-11-28 09:50
对于不是公共的方法可以使用暴力反射,getDeclaredConstructor,这样就可以获取了。并不是所有的方法都是公共的。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2