使用反射调用方法
定义一个标准的JavaBean,名叫Person,包含属性name、age。使用反射的方式创建一个实例、调用构造函数初始化name、age,使用反射方式调用setName方法对名称进行设置,不使用setAge方法直接使用反射方式对age赋值。
package com.alex.question2;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
public class ReflectTest {
public static void main(String[] args) {
try {
Person person = Person.class.getConstructor(String.class,int.class).newInstance("alex",25);
System.out.println("name:"+person.getName()+"\nage:"+person.getAge());
Method setNameMethod=Person.class.getMethod("setName", String.class);
setNameMethod.invoke(person, "zhuang");
Method setAgeMethod=Person.class.getMethod("setAge", int.class);
setAgeMethod.invoke(person, 23);
System.out.println("name:"+person.getName()+"\nage:"+person.getAge());
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NoSuchMethodException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
package com.alex.question2;
public class Person {
private String name;
private int age;
public String getName() {
return name;
}
public int getAge() {
return age;
}
public void setName(String name) {
this.name = name;
}
public void setAge(int age) {
this.age = age;
}
public Person(String name, int age) {
super();
this.name = name;
this.age = age;
}
public Person(){
}
}
运行结果:
name:alex
age:25
name:zhuang
age:23
还没有评论,来说两句吧...