2016-08-23 83 views
-1

我想通过静态方法更改一个私有静态变量,并且BlueJ说我不能,因为我试图更改的变量(它声明为静态)是非静态的:用静态方法更改一个静态变量

public class Playerinfo { 
    private static String name = ""; //Stores the name of the 'player' 
    public static void setname(String name) { 
     this.name = name; 
    } 
} 

该变量被称为名称,该方法被称为setname。我知道我能做到这一点:

Playerinfo.name = (insert variable here) 

,因为我想在Playerinfo名义变量声明为private不与其他类,很容易插手我不喜欢上面。

回答

2

静态方法中没有this

你最好的选择是重命名方法的参数:

public class Playerinfo { 
    private static String name = ""; //Stores the name of the 'player' 
    public static void setname(String newName) { 
     name = newName; 
    } 
} 
1

this是指一个类的实例,这是一个静态方法非法的。请重新命名您的参数并执行name = param;,或者按照类别引用它:Playerinfo.name = name;。无论哪种方式,它都不会影响其他类的可见性。

0

据我了解名称不需要是static.Each PlayerInfo对象必须有自己的名称,以便去除来自名称和setName

public class Playerinfo{ 
    private String name = ""; //Stores the name of the 'player' 
    public void setname(String newName){ 
     this.name = newName; 
} 
+0

我只打算有Playerinfo作为参考类的静态不作为一个对象,所以这就是为什么我使用静态变量和方法。 –