使用静态方法更改静态变量

时间:2016-08-23 22:36:35

标签: java variables static

我试图通过静态方法更改私有静态变量,而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中的名称变量声明为私有,以免被其他类轻易干扰。

3 个答案:

答案 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;
}