在寫在構造函數中設置實例變量,當我在這個警告是一個參數化的JUnit測試案例:列出靜態類生成警告,其他數據類型不
提供的解決方案是:
@SuppressWarnings("static-access")
和
ClassA.ListOfStrings = ParamListOfStrings;
代替
this.ListOfStrings = ParamListOfStrings;
此警告發生自定義的對象,以及,但不爲其他的數據類型(或單個String
)。爲什麼?
在寫在構造函數中設置實例變量,當我在這個警告是一個參數化的JUnit測試案例:列出靜態類生成警告,其他數據類型不
提供的解決方案是:
@SuppressWarnings("static-access")
和
ClassA.ListOfStrings = ParamListOfStrings;
代替
this.ListOfStrings = ParamListOfStrings;
此警告發生自定義的對象,以及,但不爲其他的數據類型(或單個String
)。爲什麼?
它發生在其他數據類型靜態。
訪問靜態字段時,最好使用ClassName.fieldName
而不是myObj.fieldName
。
其中一個原因是在將字段更改爲非靜態時出現編譯錯誤。
靜態並不完全意味着「被所有實例共享」 - 它表示「根本不涉及特定實例」。換句話說,您可以在類A中獲得靜態字段而不創建任何實例。
你可以做
ClassName.variable;
,而不是
ClassName cn = new ClassName();
cn.variable;
警告無關與靜態變量的類型,但與事實,你有資格你靜態字段訪問表達式與擁有類的實例而不是類的名稱。
我完全忽略了我的其他數據類型沒有聲明爲靜態的事實,謝謝指出!我目前有幾個字段作爲靜態(列表,因爲它們將數據添加到靜態'getParameters()'方法中)和幾個字段作爲非靜態(它們正在構造函數中初始化)。建議在這種情況下使所有字段都是靜態的? – 2013-03-19 08:43:06
每個與實例相關的字段都必須是非靜態的。如果你想要與所有實例共享一個字段,你可以使用static(並且可能在構造函數之前實例化它,而不是在它內部實例化)。 – BobTheBuilder 2013-03-19 08:45:32