Java 静态方法中的默认变量
我有一个方法(例如helpMethod),它出现在我的许多项目类中,并使用所有这些类中作为私有类属性存在的变量(例如xVar)执行某些操作。我希望将此方法设置为默认类中的静态方法,并从中使用它。可以避免将xVar作为参数传递给静态实现吗 比如:Java 静态方法中的默认变量,java,static,Java,Static,我有一个方法(例如helpMethod),它出现在我的许多项目类中,并使用所有这些类中作为私有类属性存在的变量(例如xVar)执行某些操作。我希望将此方法设置为默认类中的静态方法,并从中使用它。可以避免将xVar作为参数传递给静态实现吗 比如: class helpClass { static void helpMethod() { return ++xVar; } } class demoClass { private int xVar = 0;
class helpClass {
static void helpMethod() {
return ++xVar;
}
}
class demoClass {
private int xVar = 0;
int addToXVar() {
helpClass.helpMethod();
}
}
而不是:
class helpClass {
static void helpMethod(int xVar) {
return ++xVar;
}
}
class demoClass {
private int xVar = 0;
int addToXVar() {
helpClass.helpMethod(xVar);
}
}
为了避免传递对demoClass的引用,您可以使用一个超类
class helpClass {
protected int xVar = 0;
void helpMethod() {
++xVar;
}
}
class demoClass extends helpClass {
int addToXVar() {
helpMethod();
}
}
也可以使用Java8中的接口+
interface helper {
int getXVar();
void setXVar(int xVar);
default void helpMethod() {
setXVar(1 + getXVar());
}
}
class demoClass implements helpClass {
private int xVar = 0;
int addToXVar() {
helpMethod();
}
public int getXVar() { return xVar; }
public void setXVar(int xVar) { this.xVar = xVar; }
}
static
方法无权访问实例变量。类无权访问其他类的私有成员(大部分)。第二个示例实际上什么都不做。您从不使用方法的返回值。因此,即使在调用addToXVar()
之后,xVar
仍将是它以前的值,因为java是您的第二个示例,它不能像调用方的xVar
那样工作,因为调用方不会得到增量。我会先从一些有效的东西开始,然后再尝试使它更优雅。