您能举几个遮盖的例子(代码段)吗?
我读了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/