Может ли это быть, если / иначе утверждение будет уменьшено или улучшено? - PullRequest
0 голосов
/ 24 января 2020

У меня есть много классов, выходящих из базового класса, который имеет эту функцию:

public boolean setVal(int v) {
    if (val != v) {
        val = v;
        return true;
    }
    return false;
}

Поскольку у меня так много классов, я хотел бы сделать это утверждение максимально эффективным. Я пробовал это:

public boolean setVal(int v) {
    return val == v ? false : (val = v | true);
}

Тем не менее, я думаю, я не могу изменить val inline, как это. (Я очень плохо знаком с Java)

Можно ли сделать это более эффективным?

1 Ответ

1 голос
/ 24 января 2020
public boolean setVal(int v) {
    return val != (val = v);
}

выполняет следующие действия:

  1. устанавливает val в v
  2. return, если старое значение отличается от нового значения

val всегда будет установлен на v, но это не проблема, так как если val равно v, val не изменится.

...