如何在匿名內(nèi)部類中訪問(wèn)外部類的成員變量

小樊
84
2024-09-02 22:42:43

在Java中,匿名內(nèi)部類可以直接訪問(wèn)外部類的成員變量,只要這些變量是final或者是effectively final。這意味著它們?cè)诔跏蓟蟛粫?huì)再改變其值。

以下是一個(gè)示例:

public class OuterClass {
    private String outerVar = "I am from Outer Class";

    public void createAnonymousInnerClass() {
        final String localVar = "I am a local variable";

        Runnable runnable = new Runnable() {
            @Override
            public void run() {
                System.out.println("Accessing outer class member: " + outerVar);
                System.out.println("Accessing effectively final local variable: " + localVar);
            }
        };

        runnable.run();
    }

    public static void main(String[] args) {
        OuterClass outer = new OuterClass();
        outer.createAnonymousInnerClass();
    }
}

在這個(gè)例子中,我們創(chuàng)建了一個(gè)匿名內(nèi)部類Runnable,并在其run方法中訪問(wèn)了外部類的成員變量outerVar和一個(gè)effectively final的局部變量localVar。當(dāng)我們運(yùn)行這個(gè)程序時(shí),它將輸出:

Accessing outer class member: I am from Outer Class
Accessing effectively final local variable: I am a local variable

0