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

У меня есть сценарий, в котором объект, получающий от пользовательского интерфейса, передает логическое значение, и он сохраняется в базе данных как целое, например 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

2 ответа

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

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

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

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

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


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

Вместо:

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

записывать:

return (BServer.y == 1) ? true : false;

licensed under cc by-sa 3.0 with attribution.