反射类的普通方法
package star.july.reflect;import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;import org.junit.Test;//調用類的普通方法
public class MethodReflect {@Testpublic void test1() throws Exception{Class stuCla = Class.forName("star.july.entity.Student");Object obj = stuCla.newInstance(); //創建類對象//獲得類的方法//參數一:方法的名字//參數二:方法的成員變量Method setName = stuCla.getMethod("setName", String.class);//調用方法//參數一:要調用方法的類對象//參數二:要傳入的值setName.invoke(obj, "小白");System.out.println(obj); //輸出:Student [name=小白, age=0]//得到所有的方法Method[] method = stuCla.getMethods(); for(Method m : method){System.out.println(m); //打印所有的方法}}@Testpublic void test2() throws Exception{Class stuCla = Class.forName("star.july.entity.Student");Object obj = stuCla.getDeclaredConstructor(int.class).newInstance(23); //創建類對象//獲取所有的有參方法Method ageMethod = stuCla.getDeclaredMethod("getAge");System.out.println(obj); //輸出:Student [name=null, age=23]//獲取所有的無參方法Method[] declaredMethods = stuCla.getDeclaredMethods();}
}
Student類:
package star.july.entity;import java.io.Serializable;public class Student extends Person<Cat> implements Serializable{private String name;private int age;public Student() {super();}public Student(String name, int age) {super();this.name = name;this.age = age;}public Student( int age) {super();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;}@Overridepublic String toString() {return "Student [name=" + name + ", age=" + age + "]";}}總結