簡體   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