java内部类

静态成员类是最简单的一种嵌套类。和普通的外层类一样,只是碰巧被声明在另一个类的内部而已,而且还带有点特殊技能:可以访问外层类的所有成员(包括私有的)。

非静态成员类的每个实例都隐含着与外层类的一个外层类实例(名为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

你可能感兴趣的