您能举几个遮盖的例子(代码段)吗?

我读了JLS,但是我不明白这个概念。 JLS没有提供代码示例。

隐藏在基类和派生类的字段之间。

阴影位于字段和局部变量之间。

模糊-在什么(?)和什么(?)之间

旁白:有趣的是,JLS说在不继承父类的各个字段的情况下:



我也知道类名,方法名和字段名都在其不同的命名空间中:

// no problem/conflict with all three x's
class x {
    void x() { System.out.println("all fine"); }
    int x = 7;
}

示例:

最终找到了一个example和一些explanation,它们声称被遮盖了(这会导致编译错误):
class C {
    void m() {
        String System = "";
        // Line below won't compile: java.lang.System is obscured
        // by the local variable  String System = ""
        System.out.println("Hello World");  // error: out can't be resolved
    }
}

最佳答案

正如JLS所说,在类型和包之间,或在局部变量和类型之间,会发生混淆。这是第二种类型的遮盖的简单示例,其中局部变量a遮盖了具有相同名称的类:

class Foo {
    class a {

    }

    int x() {
        int a = 0;
    }
}

关于java - 符合JLS(6.4.2。模糊)的 "obscuring"的代码示例,尤其是此 "local variable or type can obscure a package",我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54112092/

10-09 03:40