我反射用的没错啊 怎么会运行出错呢?Field完Method invoke 都调用的没错啊 怎么会出错呢 求高手解答
- import java.lang.reflect.*;
- /*使用反射的方法来修改自定义类的内部属性。*/
- public class Person{
-
- private String name;
- private int age;
- public Person(){}
- public Person(String name,int age){
- this.age=age;
- this.name=name;
- show();
- }
- public Person(String name){
- this.name=name;
- show();
- }
- public int getAge(int age) {
- return age;
- }
- public String getName(String name) {
- return name;
- }
- public void setAge(int age) {
- this.age=age;
- }
- public void setName(String name) {
- this.name=name;
- }
- void show()
- {
- System.out.println(name+"..."+age);
- }
- }
- class PersonDemo{
- public static void main(String[] args) throws Exception, NoSuchMethodException {
-
- Constructor<Person> constor=Person.class.getConstructor(String.class);
-
- Person person=constor.newInstance(new String("张三"));//用newInstance初始化指定的构造函数
-
-
- Method method=Person.class.getMethod("setName", String.class);//获得setName方法
-
- method.invoke(person, "李四a");//调用setName方法对姓名进行设置
- Field fields=person.getClass().getDeclaredField("age");//获得指定的成员变量
- fields.set(person,99);//重新为age赋值
- person.show();
- fields.setAccessible(false);//将指定成员变量设置为不可见
- }
- }
复制代码 |