java - 匿名类访问局部变量

标签 java anonymous-class

如果您查看下面的代码,您会发现我在方法 M() 中声明了 int x = 0。然后我在所述方法中声明一个匿名类并声明 int z = x。我的问题是,我认为这是不允许的,因为 x 是在匿名类存在的封装方法中定义的,并且不是常量。也许我误解了一些东西。有人可以帮我解答一下我的困惑吗?

public class SomeClass {
public void someMethod(Super pObj) {}
}

public class Super {
    public Super() {}
    public void aMethod() {}
}

public class SubClass extends Super {

    public void M() {
        SomeClass someObject = new SomeClass();

        int x = 0;

        someObject.someMethod(new Super() {

            int z = x;  

            @Override public void aMethod() {}
        });
    }
}

最佳答案

x 变量是有效的最终变量,因此可以在匿名类中使用(从 Java SE 8 开始)。

有关更多信息,您可以查看 this thread

关于java - 匿名类访问局部变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52281777/

相关文章:

c# - 我可以在 C# 中为匿名类指定一个有意义的名称吗?

java - 本地 AtomicReference 和带有 lambda 的数组

Java 类加载器更改

互联网上的 Java 套接字 : ConnectException (operation timed out)

java - SPARQL 查询从特定 RDF 图中不返回任何内容

Java 反射与抽象类

java - 将用户输入添加到ArrayList java

java - 使用 GSON 解析 JSON 提要并获取数组而不是多参数

java - 有什么方法可以使用 junit 测试匿名内部类吗?

java - 我们可以创建一个接口(interface)对象吗?