java中,我们能够使用反射机制获得该类的一些信息,如构造器,方法等。那么我们如何使用它们呢?
首先我们定义一个Person类
package person;
public class Person {
private String name;
private int age;
private String sex;
public Person(){}
public Person(String name,int age,String sex){
this.name=name;
this.age=age;
this.sex=sex;
}
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;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
}
我们使用反射来调用该类的getName()方法
package reflectDemo; import java.lang.reflect.Method; import person.Person; public class ReflectDemo { public static void main(String[] args) throws Exception { //新建一个Person对象 Person person = new Person("Bob",20,"男"); Person person2 = new Person("Bob2",20,"男"); //根据对象获得Class Class<Person> clazz = (Class<Person>) person.getClass(); //获得方法 getMethod(name, parameterTypes),参数分别为方法名和方法中的参数(可多个参数) Method method = clazz.getMethod("getName"); //调用该方法,传入参数为某对象,这样就会调用该对象的该方法 //invoke(obj, args)第一个参数为对象,后面可传入多个参数,为该对象的该方法所传入的参数 String name = (String) method.invoke(person); System.out.println(name); } }
打印结果为Bob