Сравните значения возвращаемого типа Boolean и Integer

1

У меня есть сценарий, в котором объект, получающий от пользовательского интерфейса, передает логическое значение, и он сохраняется в базе данных как целое, например TRUE = 1 и FALSE = 0. Теперь, когда флаг изменен на ex до FALSE, мне нужно сравнить его целочисленное значение, если его 0 ничего не делает, если 1 затем изменится на 0 и обновится. Один путь ниже, но, возможно, лучший способ сделать это.

class AClient {
    static Boolean x;
}
class BServer {
    static Integer y;
}
public class Demo {
    public static void main(String[] args) {
        AClient.x = Boolean.TRUE;
        BServer.y = 0;
        System.out.println(storedValues());
    }
    private static Boolean storedValues() {
        if (AClient.x) {
            if (BServer.y.equals(new Integer(1))) {
                return true;
            } else {
                return false;
            }
        } else {
            if (BServer.y.equals(new Integer(1))) {
                return false;
            } else {
                return true;
            }
        }
    }
}

Выход: false

Теги:
integer
boolean

2 ответа

0
Лучший ответ

Метод storedValues может быть уменьшен до:

return AClient.x.equals(BServer.y.equals(1));

Если x и y не должны иметь значение null, я заменил бы их примитивами вместо класса-оболочки, а затем storedValues мог бы выглядеть так:

return BServer.y == 1 == AClient.x;

Вы также можете изменить возвращаемый тип storedValues на boolean.

0

Там более короткий способ написать это:

Вместо:

if (BServer.y.equals(new Integer(1))) {
    return true;
} else {
    return false;
}

записывать:

return (BServer.y == 1) ? true : false;
  • 1
    Ммм, зачем вообще использовать троичный оператор?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню