变量Y掩盖了类型Y。请参见JLS:
6.4.2。遮盖
简单名称可能出现在可能被解释为变量,类型或包的名称的上下文中。在这些情况下,第6.5节的规则指定将优先于类型选择变量,并优先于包选择类型。因此,有时可能无法通过其简单名称引用可见类型或程序包声明。我们说这样的声明是模糊的。
合格名称XYZ的解析是根据:
6.5.2。上下文不明确名称的重新分类
…
如果名称在“。”的左边。被重新分类为TypeName,则:
如果标识符是TypeName表示的方法名称或类型的类型的字段,则此AmbiguousName将重新分类为expressionName。
否则,如果标识符是用TypeName表示的类型的成员类型的名称,则此AmbiguousName将重新分类为TypeName。
否则,将发生编译时错误。
实际上,由于类型和变量的常规命名约定,这种情况不太可能发生。



