我试图通过静态方法更改私有静态变量,而BlueJ说我不能,因为我尝试更改的变量(声明为静态变量)是非-static:
public class Playerinfo {
private static String name = ""; //Stores the name of the 'player'
public static void setname(String name) {
this.name = name;
}
}
该变量名为name,该方法称为setname。我知道我可以这样做:
Playerinfo.name = (insert variable here)
我不喜欢上述内容,因为我希望将Playerinfo中的名称变量声明为私有,以免被其他类轻易干扰。
答案 0 :(得分:2)
静态方法中没有this
。
最好的办法是重命名方法的参数:
public class Playerinfo {
private static String name = ""; //Stores the name of the 'player'
public static void setname(String newName) {
name = newName;
}
}
答案 1 :(得分:1)
this
指的是一个类实例,它在静态方法中是非法的。您可以重命名参数并执行name = param;
,也可以按类引用它:Playerinfo.name = name;
。无论哪种方式,它都不会影响其他类的可见性。
答案 2 :(得分:0)
据我所知,name不需要是static.Each PlayerInfo对象必须有自己的名称,所以从name和setname中删除static
public class Playerinfo{
private String name = ""; //Stores the name of the 'player'
public void setname(String newName){
this.name = newName;
}