动态成员类是最简略的一种嵌套类。和一般的外层类一样,只是碰巧被申明在另一个类的外部而已,而且还带有点非凡技能:能够拜访外层类的所有成员(包含公有的)。
非动态成员类的每个实例都隐含着与外层类的一个外层类实例 (名为 this$0,动态的外部类没有)。在非动态成员类实例办法外部,能够调用外层类的办法,或者利用润饰过的 this 结构取得外层类实例的援用。
import java.lang.reflect.Field;
public class OutClass {
public static void main(String[] args) throws Exception{Field[] fileds = InnerClass.class.getDeclaredFields();
InnerClass innerClass = new OutClass().new InnerClass();
for(Field field:fileds){System.out.println(field.getName());
System.out.println(field.getType());
((OutClass)field.get(innerClass)).show();}
}
class InnerClass{public OutClass getOut(){
// 能够通过润饰的 this 获取外部类援用
return OutClass.this;
}
}
public void show(){System.out.println(1);
}}
输入后果为
this$0
class innerClass.OutClass
1