我有一个方法(例如helpMethod)出现在我的许多项目类中,并且使用所有这些类中的变量(例如xVar)作为私有类属性来执行某些操作。我想将此方法在默认类中设为静态,然后从那里开始使用它。是否可以避免必须将xVar作为参数传递给静态实现?
就像是:
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();
}
}
或者您可以在Java 8+中使用接口
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; }
}