java之反射底层实现

反射使用场景无处不在,常用jdk动态代理
底层设计到的主要类,Method(方法),Field(属性值),constructor(构造器),modifier(修饰工具类)  

第一种基本用法:

Class p1 = Class.forName("com.example.demo.Test");
System.out.println(p1.getName());
Method m1 = p1.getMethod("test");
Field[] fields = p1.getFields();
for (Field f:fields){
    System.out.println(f.getName());
}

或者

Class p1 = Class.forName("com.example.demo.Test");
System.out.println(p1.getName());
Method m1 = p1.getDeclaredMethod("test");
Field[] fields = p1.getFields();
for (Field f:fields){
    System.out.println(f.getName());
}
 

Method获取

调用Class类的getDeclaredMethod可以获取指定方法名和参数的方法对象Method

getDeclaredMethod
java之反射底层实现_第1张图片

其中privateGetDeclaredMethods方法从缓存或JVM中获取该Class中申明的方法列表,searchMethods方法将从返回的方法列表里找到一个匹配名称和参数的方法对象。


后续在更新
 

你可能感兴趣的:(java)