Java 在三元运算中声明变量。可能吗?
Java declare variable in ternary operation. Is it possible?
假设我们有一些 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
在单独的行中定义变量:
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)
但是不能在里面声明一个新的变量。
假设我们有一些 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
在单独的行中定义变量:
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)
但是不能在里面声明一个新的变量。