Java 静态方法中的默认变量

Java 静态方法中的默认变量,java,static,Java,Static,我有一个方法(例如helpMethod),它出现在我的许多项目类中,并使用所有这些类中作为私有类属性存在的变量(例如xVar)执行某些操作。我希望将此方法设置为默认类中的静态方法,并从中使用它。可以避免将xVar作为参数传递给静态实现吗 比如: class helpClass { static void helpMethod() { return ++xVar; } } class demoClass { private int xVar = 0;

我有一个方法(例如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();
    }
}
也可以使用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
那样工作,因为调用方不会得到增量。我会先从一些有效的东西开始,然后再尝试使它更优雅。