Loading

匿名内部类

匿名内部类只能访问final局部变量,但可以访问外部类的普通成员变量。

public class InnerClass {

    public static void main(String[] args) {
        Outer o = new Outer();
        Inner i = o.method(1);
        i.print();
    }

}
class Outer{
    private int i = 1;
    public Inner method(final int j){
        return new Inner(){
            public void print(){
                i++;  // i的值可以改变,但j不可以
                System.out.println("i=" + i + ",j=" + j);
            }
        };
    }
}

interface Inner{
    void print();
}

如同method()方法中的变量j所示,必须是final,如果不写,JDK1.8中会隐式的声明为final,依然不可改变其值。而外部类的成员变量却不受此限制。

posted @ 2017-10-05 16:08  leon_x  阅读(27)  评论(0)    收藏  举报