繁体   English   中英

Java在三元操作中声明变量。 可能吗?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM