【发布时间】:2011-11-17 11:41:28
【问题描述】:
我正在开发一个 Web 应用程序,其中有一个名为 getData() 的实用程序方法,我将其设为静态。
到现在为止还不错,但是这个名为 getData() 的静态方法需要一些来自 setter 和 getter 的数据。
所以现在我的问题是我们可以将 setter/getter 设为静态吗?
【问题讨论】:
标签: java web-applications
我正在开发一个 Web 应用程序,其中有一个名为 getData() 的实用程序方法,我将其设为静态。
到现在为止还不错,但是这个名为 getData() 的静态方法需要一些来自 setter 和 getter 的数据。
所以现在我的问题是我们可以将 setter/getter 设为静态吗?
【问题讨论】:
标签: java web-applications
如果您的属性是static,那么Getters and setters 也将是static.. 这完全取决于您..
【讨论】:
如果获取/设置静态字段,Getter 和 setter 可以是静态的。
【讨论】:
是的,你可以和那个类,无论定义了那个对象/变量,它们看起来像
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 关键字,但为此您需要创建该类的实例。静态用于不创建可以访问其成员的类的实例。
【讨论】:
当然,您可以将 getter 和 setter 设为静态(使用适当的静态字段)。
但是:当您处理 Web 应用程序(多个并行请求 - 多个线程)时,您肯定会遇到线程问题 - 这不是线程安全的,除非你照顾(例如使用synchronized)。
【讨论】:
当然可以。 getter 和 setter 只是普通的方法。 它们可以是静态的,也可以不是。
唯一的限制是,不要在静态方法中使用非静态字段和方法。因为静态方法和静态字段属于一个类,非静态方法和字段属于对象。我认为它们是两个不同的层次。
【讨论】:
是的,只要类变量和方法都设为静态,就允许使用静态 setter/getter。看看这个 getter 方法示例。
public class Test {
private static WebDriver driver;
public static WebDriver getDriver() {
return driver;
【讨论】:
是的,getter/setter 可以根据您的需要设为静态。或者我没听懂你的问题!
【讨论】:
如果您使用任何非静态的属性或属性,则无法将 getter 和 setter 方法设为静态。如果您使用 Eclipse 和 Netbeans 等 IDE,它们会警告您,甚至可能不允许您编译代码。
【讨论】:
如果您的数据成员是静态的,那么您可以使用静态 getter/setter。但是如果你的数据成员不是静态的,那么在 getData() 静态方法中调用你的非静态 getter/setter。
【讨论】: