Rom*_*man 0 java methods concurrency visibility field
我有一个名为"a"的字段.在类中我有一个方法,在这个方法的参数列表中我也有"a".那么,我会在方法中看到哪个"a"?它会是该领域还是该方法的论点?
public class myClass {
private String a;
// Method which sets the value of the field "a".
public void setA(String a) {
a = a;
}
}
Run Code Online (Sandbox Code Playgroud)
顺便说一下,有类似的情况.方法有一些局部(for方法)变量,其名称与字段名称一致.如果我在方法(字段或局部变量)中引用这样的方法 - 局部变量,那么"看到"该方法会是什么?
更多本地范围具有优先级,因此该参数a将隐藏该字段a.实际上,您将参数值设置a为自身.避免名称冲突(并提高可读性)的正确习惯是this用于明确标记类成员:
public void setA(String a) {
this.a = a;
}
Run Code Online (Sandbox Code Playgroud)
局部变量vs成员变量也是如此:局部变量隐藏具有相同名称的成员变量.