Reuse of identifier names in subscopes leads to obscuration or shadowing. The reused identifiers in the current scope render those defined elsewhere inaccessible. Although the Java Language Specification clearly resolves any syntactic ambiguity arising from obscuring or shadowing, such ambiguity burdens code maintainers, especially when code requires access to both the original named entity and the inaccessible one. The problem is exacerbated when the reused name is defined in a different package.
...