反射
运行时分析任意的对象。
获取Class
String dassName = "java.util .Random"; Class cl = Class.forName(dassName);
- getClass方法
Class dl = Random.class; Gass cl 2 = int.class;Class cl 3 = Doublet.class;
反射分析类的能力
java.lang.reflect 包中有三个类 Field、 Method 和 Constructor 分别用于描述类的域、 方法和构造器
运行时分析对象
- setAccessible方法 访问私有域,setAccessible是AccessibleObject 类中的一个方法,它是 Field、 Method 和 Constructor类的公共超类。
优点:易于编写通用性代码
缺点:编译时不容易发现问题,运行时易出错。
泛型类型的继承规则
S extends T 但 Pair<S> 与 Pair<T>没有什么联系,如下:
1 | ArrayList<Parent1> aa = new ArrayList<Sun2>(); // ERROR |
springboot使用反射
ReflectionEnvironmentPostProcessorsFactory.getEnvironmentPostProcessors()
准备环境,创建PostProcessor类
使用Instantiator