NO, the inline declaration of a variable in a statement is not only valid in a for loop.
It is also valid in try-with-resource statement, JLS 14.20.3:
...
A resource specification uses variables to denote resources for the try statement, either by declaring local variables with initializer expressions or ...
Example:
try (var rd = new BufferedReader(...)) {
...
}
After searching the JLS 19 Syntax page, I believe only the two for
statements and the try
-with-resource statement accept this kind of declaration (despite Lambda-expressions).
Confirmed by JLS 14.4. Local Variable Declaration Statements:
Apart from local variable declaration statements, a local variable can be declared by the header of a basic for
statement (§14.14.1), an enhanced for
statement (§14.14.2), or a try
-with-resources statement (§14.20.3).
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…