package day1;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
public class GetDeom {
public static void main(String[] args) throws Exception {
//获取所有成员方法
Class studentClass = Student.class;
Method[] methods = studentClass.getMethods();
for (Method method : methods) {
System.out.println(method);
}
System.out.println("==========");
Method eat = studentClass.getMethod("eat",String.class);
Student s=new Student();
eat.invoke(s,"饭");
System.out.println("==========");
//获取所有构造方法
Constructor declaredConstructor = studentClass.getDeclaredConstructor();
System.out.println(declaredConstructor);
Constructor[] declaredConstructors = studentClass.getDeclaredConstructors();
for (Constructor constructor : declaredConstructors) {
System.out.println(constructor);
System.out.println("==========");
//获取所有的成员变量
Field b = studentClass.getField("c");//只获取public修饰符下的成员变量
System.out.println(b);
System.out.println("==========");
//获取所有成员变量包括private修饰的
Field[] declaredFields = studentClass.getDeclaredFields();
for (Field declaredField : declaredFields) {
System.out.println(declaredField);
}
System.out.println("==========");
//暴力反射
Field name = studentClass.getDeclaredField("name");
name.setAccessible(true);
Object o = name.get(s);
System.out.println(o);
}
}
}
package day1;
public class Student {
private String name;
private int age;
public int c;
public Student(String name, int age) {
this.name = name;
this.age = age;
}
public Student() {
}
public void eat(String foot){
System.out.println("eat已经执行"+foot);
}
}