2011-11-17 48 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