scjp 試験の準備をしていて、驚くべき行動に気付きました。
public class Test {
int k;
{
int k; // it is valid variant
}
public static void main(String[] args) {
int kk;
{
int kk; // NOT VALID.java: variable kk is already defined in method main(java.lang.String[])
}
}
public void method (int var){
int var;//NOT VALID.java: variable var is already defined in method method(int)
}
}
常に心に留めていたルールは次のとおりです。3 つのバリアントはすべて可能であり、内部定義は外部と重複すると考えました。
例は、それが間違ったルールであることを示しています。
この状況を明確にし、身近な状況の共通ルールを説明してください。
PS
public class Test {
int k;
{
int k;
{
int k; //java: variable k is already defined in instance initializer of class Test
}
}
}