2016-08-23 85 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作爲參考類的靜態不作爲一個對象,所以這就是爲什麼我使用靜態變量和方法。 –