动态成员类是最简略的一种嵌套类。和一般的外层类一样,只是碰巧被申明在另一个类的外部而已,而且还带有点非凡技能:能够拜访外层类的所有成员(包含公有的)。
非动态成员类的每个实例都隐含着与外层类的一个外层类实例(名为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