背景来源:spring源码
第一次bpp判断时,spring中aop对象提前实例化!
package com.shadow.wang.synthetic;
import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
public class OuterClass {
public static void main(String[] args) {
InnerClass inner = new InnerClass();
System.out.println("inner.age = " + inner.age);
Class<InnerClass> clazz = InnerClass.class;
Method[] declaredMethods = clazz.getDeclaredMethods();
for (int i = 0; i <declaredMethods.length ; i++) {
System.out.println("declaredMethods[" + i+"] " + declaredMethods[i].getName());
}
Constructor<?>[] declaredConstructors = clazz.getDeclaredConstructors();
for (int i = 0; i <declaredConstructors.length ; i++) {
System.out.println("declaredConstructors[" + i+"] " + declaredConstructors[i].getParameters());
for (int j = 0; j <declaredConstructors[i].getParameters().length ; j++) {
System.out.print("Parameters[" + i+"] " + declaredConstructors[i].getParameters()[j]);
}
}
}
static class InnerClass{
private int age = 1;
private InnerClass(){
System.out.println("No args Constructor");
}
}
}
- 内部类私有化属性和私有化构造方法,理论上别人不能方法,外部类这里确可以访问。是因为生成了 一个合成的属性方法方法 ,和公共构造方法
- eg: public int getXXX(return i){}
public Inner(Outter xx)构造方法