6.4 Shadowing and Obscuring
A local variable (§14.4), formal parameter (§8.4.1, §15.27.1), exception parameter
(§14.20), and local class (§14.3) can only be referred to using a simple name, not
a qualified name (§6.2).
Some declarations are not permitted within the scope of a local variable, formal
parameter, exception parameter, or local class declaration because it would be
impossible to distinguish between the declared entities using only simple names.
For example, if the name of a formal parameter of a method could be redeclared as the name
of a local variable in the method body, then the local variable would shadow the formal
parameter and the formal parameter would no longer be visible - an undesirable outcome.
It is a compile-time error if the name of a formal parameter is used to declare a new
variable within the body of the method, constructor, or lambda expression, unless
the new variable is declared within a class declaration contained by the method,
constructor, or lambda expression.