【问题标题】:Compare values of return type Boolean and Integer比较返回类型 Boolean 和 Integer 的值
【发布时间】:2014-11-23 06:34:47
【问题描述】:

我有一个场景,其中从 UI 接收的对象传递一个布尔值,并将其作为整数存储在数据库中,如 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;
            }
        }
    }
}

输出:假

【问题讨论】:

    标签: java integer boolean


    【解决方案1】:

    您的storedValues 方法可以简化为:

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

    如果x 和y 不需要永远为null,我会用原语而不是包装类替换它们,那么storedValues 可能看起来像这样:

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

    您还可以将storedValues 的返回类型更改为boolean。

    【讨论】:

      【解决方案2】:

      有一个更短的写法:

      代替:

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

      写:

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

      【讨论】:

      • 嗯,为什么还要使用三元运算符呢?
      猜你喜欢
      • 2022-07-30
      • 2012-04-24
      • 1970-01-01
      • 2023-03-16
      • 1970-01-01
      • 2013-10-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多