首页 > 解决方案 > 静态方法中的默认变量

问题描述

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

标签: javastatic

解决方案


为了避免传递对 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; }
}

推荐阅读