Переменная по умолчанию в статическом методе - PullRequest
0 голосов
/ 04 июля 2018

У меня есть метод (например, 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);
    }
}

1 Ответ

0 голосов
/ 04 июля 2018

Чтобы избежать передачи ссылки на 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; }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...