Как сравнить текущее логическое значение с предыдущим значением? - PullRequest
0 голосов
/ 26 августа 2018

Мне нужно сравнить текущее логическое значение с предыдущим значением, которое раньше существовало.что-то вроде следующего примера:

 private boolean f = false;

 f=true;

 if(f.preivousValue == f.currentValue){}

как мне добраться до него?

Ответы [ 3 ]

0 голосов
/ 26 августа 2018

Вам нужно будет создать собственную структуру данных.Например:

 public class StateAwareBoolean {

        private boolean oldState = false;
        private boolean currentState;

        public StateAwareBoolean(boolean value) {
            currentState = value;
        }

        public void set(boolean newState) {
            oldState = currentState;
            currentState = newState;
        }

        public boolean oldState() {
            return oldState;
        }

        public boolean currentState() {
            return currentState;
        }
    }

Использование будет примерно таким:

private StateAwareBoolean f = new StateAwareBoolean(false);

f.set(true);

if(f.oldState() == f.currentState()){}
0 голосов
/ 26 августа 2018

Например:

public class BooleanEx {

    private boolean value;

    public BooleanEx() { }

    public BooleanEx(boolean value) {
        this.value = value;
    }

    public final boolean setAndCompare(boolean newValue) {
        return value == (value = newValue);
    }

    public final boolean get() {
        return value;
    }
}

...

final BooleanEx myBoolean = new BooleanEx();
if (myBoolean.setAndCompare(false)) {

}
0 голосов
/ 26 августа 2018

Вам нужно создать другую переменную, которая будет хранить исходное значение перед назначением нового.

Если вы хотите по какой-то причине использовать его повторно, вы можете создать класс с именем, например, «BooleanWithPrevious»,и внутри этого класса вы также будете иметь два логических значения, фактическое значение и предыдущее.С помощью установщика вы можете обновить оба значения, а затем с помощью получателей принять предыдущее и текущее значение.

TL; DR

Вам нужна вспомогательная переменная для достижения того, что вы хотите.Примитивы имеют только фактическое значение и ничего не помнят.

...