Student实体类
package ch3;public class Student {private int id;private String name;public void fun1(){System.out.println("调用了fun1()方法...");}public void fun2(){System.out.println("调用了fun2()方法...");}public Student(){System.out.println("调用了无参构造方法");}public Student(int id, String name) {super();this.id = id;this.name = name;}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}@Overridepublic String toString() {return "Student [id=" + id + ", name=" + name + "]";}
Demo2测试类
package ch3;import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.List;
/*** java反射 获取对象的属性,方法,构造函数* @author szw**/
public class Demo2 {public static void main(String[] args) throws ClassNotFoundException, NoSuchMethodException, SecurityException {Class clazz = Class.forName("ch3.Student");//获取所有共有的方法,包括继承来的Method[] methodlist1 = clazz.getMethods(); for(Method m:methodlist1){System.out.println(m);}System.out.println("=====================\n");//获取所有的方法,与public,private,protect无关,不包括继承来的Method[] methodlist = clazz.getDeclaredMethods(); for(Method m:methodlist){System.out.println(m);}System.out.println("=====================\n");//获取所有的共有属性,包括继承来的Field[] fs1 = clazz.getFields();for(Field f:fs1){System.out.println(f);}System.out.println("=====================\n");//获取所有的属性,与public,private,protect无关,不包括继承来的Field[] fs = clazz.getDeclaredFields();for(Field f:fs){System.out.println(f);}System.out.println("==========获取无参的构造函数===========\n");//获取无参的构造函数Constructor cons1 = clazz.getConstructor();System.out.println(cons1);System.out.println("==========获取有参的构造函数===========\n");//获取有参的构造函数Constructor cons = clazz.getConstructor(int.class,String.class);System.out.println(cons);}
}