[英]Java - Check Not Null for a number, else assign default string value
我正在尋找一種方法來根據值是否為null來設置變量的默認值。
有問題的值是雙精度型,默認值(如果該值為null)應為字符串。
我嘗試使用以下方式,但失敗了,因為.orElse需要一個雙精度(與“值”相同的數據類型)。 有什么我可以用來實現的Java方法嗎?
Double value = 8.0;
Optional.ofNullable(value).orElse("not found")
您不遠,只需映射值即可:
String strDouble = Optional.ofNullable(value).map(Objects::toString).orElse("not found");
您編譯的方法版本:
Object result = Optional.<Object>ofNullable(value).orElse("not found");
由於賦值運算符的左側可以是Double
或String
,因此最好的方法是將其類型指定為Object
。
這將起作用:
Object value2 = Optional.<Object>ofNullable(value).orElse("not found");
(即,在Double
和String
的類層次結構中,唯一的共享類是Object)
這取決於您具有null時要執行的操作。
如果可以使用默認的long值-請使用您的方法,而不是將字符串放在orElse
的默認值。
如果你只是想知道,如果一個空的傳遞,如果這樣做不同的事情,但你不希望有==null
,則可以使用Optional::isPresent
內部調用if
。
如果沒有值不是可以忍受的狀態,則可以使用Optional::orElseThrow
引發異常。
最后,如果您只想做一些確實有價值的事情,請查看Optional::ifPresent
這是最適合此方案的方法。
如果您詳細說明用例,我將嘗試微調此答案以使其更適合。
這些都是Java 8的API,在更高版本中,您具有更大的靈活性。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.