我有一个方法(例如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; }
}

10-04 11:34