2011-11-17 47 views
11

我正在開發一個Web應用程序,其中有一個名爲getData()的實用程序方法,我將其作爲一個靜態方法。 到現在爲止它很好,但是這種名爲getData()的靜態方法需要來自setter和getters的一些數據。 所以現在我的問題是我們可以讓setter/getters成爲靜態的嗎?是否允許使用靜態setter/getters?

回答

19

如果你的屬性是static然後Getters and setters也將是static ..它的一切都取決於你..

8

如果獲取/設置靜態字段,則獲取者和設置者可以是靜態的。

0

是的,可以根據您的需要將getter/setters設置爲靜態。或者,也許我不明白你的問題!

+3

您無法從靜態方法訪問實例字段。 – StKiller

7

是你可以和任何那個對象/變量的定義,他們看起來像

private static String abc = ""; 
該類

,你可以使用get/set方法

public static String getString(){ 
    return abc; 
} 

public static void setString(String newAbc){ 
    abc = newAbc; 
} 

訪問這個對象,你可以使用這個喜歡這種方式Test.getString(); or Test.setString("new string");

你也可以定義這個get/set方法作爲普通的方式,而不需要定義static關鍵字,但是你需要創建該類的實例。靜態用於創建可以訪問其成員的類的實例。

0

當然可以。 Getter和setter只是普通的方法。 它們可以是靜態的或不是。

唯一的約束是,不要在靜態方法中使用非靜態字段和方法。由於靜態方法和靜態字段屬於一個類,而非靜態方法和字段屬於該對象。他們是我認爲的兩個不同的層次。

0

如果使用任何非靜態屬性或屬性,則無法使getter和setter方法爲靜態方法。如果您使用Eclipse和Netbeans之類的IDE,他們會提醒您,甚至可能不會編譯代碼。

4

當然,你可以讓getter和setter成爲靜態的(帶有適當的靜態字段)。

但是:當你正在處理一個Web應用程序(多個並行的請求 - 多線程),你一定有一個線程問題在這裏 - 這是不是線程安全除非你照顧(如使用​​) 。

+0

如何獲取靜態獲取地圖?這一行動是否需要同步? – Amalgovinus

+0

取決於您是否要更改地圖的數據。使地圖最終決定,你會沒事的! – kaiser