假设我们有一些city
方法String getZIP()
。
我想打印ZIP的值,或者如果ZIP为空则不打印任何内容。
我可以使用三元操作在一行代码中完成:
System.out.print(city.getZIP() == null ? "" : city.getZIP())
问题是:我可以不同时拨打.getZIP()
两次吗?
类似的东西:
System.out.print(String zip = city.getZIP() == null ? "" : zip) //syntax error here
答案 0 :(得分:3)
在单独的行中定义变量:
String zip = city.getZIP();
System.out.print(zip == null ? "" : zip);
答案 1 :(得分:3)
您可以将值分配给现有变量,但不能在ternery条件中创建一个。
类似的东西,
String zip; // Created elsewhere but not assigned to city.getZip().
System.out.print(((zip = city.getZIP()) == null) ? "" : zip)
但你不能在里面声明一个新的变量。
答案 2 :(得分:2)
我有一个完全不同的解决方案:不要那样做。
不要在您的类上放置返回 null 的方法作为" legal"结果
例如:邮政编码可以/应该是它自己的类。然后你只需声明一些ZIP的单例实例来表示"邮政编码是未定义的"。然后在" UnknownZip"上调用toString; ...例如,只给出一个空字符串。
使用null作为返回值总是为NullPointerExceptions打开机会。
所以 - 不要这样做。