java - 局部变量不能在内部类中使用。那么为什么这段代码可以工作呢?

标签 java inner-classes

我有一个学生正在准备 Java 7 OCP 考试,他向我提出了这个问题。他和我都明白局部变量不能在方法的内部类中使用,除非它是最终的,但他向我提供了以下运行良好的代码:

public class TestC195 {

    public static void main(String[] args) {
        TestC195 myObject = new TestC195();
        myObject.doStuff();
    }

    private String x = "Outer 2";

    void doStuff() {
        String z = "local";

        class myInner {
            public void seeOuter() {
                System.out.println("outer: " + x);
                System.out.println("outer: " + z);
            }
        }
        myInner in = new myInner();
        in.seeOuter();

    }

}

输出为:

outer: Outer 2
outer: local

那么我们都错过了什么?

最佳答案

如果您使用 java 8 进行编译,那是因为它实际上是最终的 link here

关于java - 局部变量不能在内部类中使用。那么为什么这段代码可以工作呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41555312/

相关文章:

java - 文件已以错误的编码加载:android studio中的 'UTF-8'

java - 如何将多个文本字段添加到数组列表 JavaFX

java - 当我绘制大尺寸图像时,java中的原因是什么,导致速度缓慢?

java - 音频可以在静态嵌套类中实现吗?

c++ - 内部类访问外部类嵌套枚举

java - 从外部内部类封闭内部类的外部类实例引用

java - 如何在 Spring 中执行将导出为 WAR 文件的文件 I/O

java - 由于我的 if 语句导致编译错误

java - 这个包含内部类的变量到底做什么?

Java 作用域规则和内部类