反射基础

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);
}
}
posted @ 2021-11-03 09:56  java小寇  阅读(26)  评论(0)    收藏  举报