[英]Java declare variable in ternary operation. Is it possible?
假设我们有一些使用String getZIP()
方法的city
。 我想打印ZIP的值,或者如果ZIP为null,则不打印任何内容。
我可以使用三元运算在一行代码中做到这一点:
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);
您可以将值分配给现有变量,但不能在ternery条件内创建一个值。
就像是,
String zip; // Created elsewhere but not assigned to city.getZip().
System.out.print(((zip = city.getZIP()) == null) ? "" : zip)
但是您不能在其中声明一个新变量。
我为您提供了一个完全不同的解决方案: 不要那样做 。
不要在您的类上放置将“ neggit”结果返回null的方法。
例如:邮政编码可以/应该是它自己的类。 然后,您只需声明一些ZIP单例实例即可表示“ ZIP代码未定义”。 然后在“ UnknownZip”上调用toString ...例如,仅给出一个空字符串。
使用null作为返回值总是会打开NullPointerExceptions的机会。
所以-不要那样做。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.