Java 在三元运算中声明变量。可能吗?

Java declare variable in ternary operation. Is it possible?

假设我们有一些 cityString getZIP() 方法。 我想打印 ZIP 的值,或者如果 ZIP 为空则不打印任何内容。

我可以用三元运算在一行代码中完成:

System.out.print(city.getZIP() == null ? "" : city.getZIP())

问题是:我可以在不调用 .getZIP() 两次的情况下做同样的事情吗? 类似于:

System.out.print(String zip = city.getZIP() == null ? "" : zip) //syntax error here

在单独的行中定义变量:

String zip = city.getZIP();
System.out.print(zip == null ? "" : zip);

我有一个完全不同的解决方案给你:不要那样做

不要将方法放在 class 上 return null 作为 "legit" 结果。

例如:邮政编码可以/应该是它自己的 class。然后你只需声明一些 ZIP 的单例实例来表示 "ZIP code is undefined"。然后在 "UnknownZip" 上调用 toString ... 例如只给出一个空字符串。

使用 null 作为 return 值总是会带来 NullPointerExceptions 的机会。

所以 - 不要那样做。

您可以将值赋给现有变量,但不能在三元条件中创建一个。

有点像,

String zip; // Created elsewhere but not assigned to city.getZip().
System.out.print(((zip = city.getZIP()) == null) ? "" : zip)

但是不能在里面声明一个新的变量。