這篇文章主要為大家介紹了關於Java8中Optional類型和Kotlin中可空類型的使用對比,文中透過範例程式碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。
本文主要為大家介紹了關於Java8中Optional類型和Kotlin中可空類型使用的相關內容,分享出來供大家參考學習,下面話不多說了,來一起看看詳細的介紹:
在Java 8中,我們可以使用Optional 類型來表達可空的類型。
package com.easy.kotlin; import java.util.Optional; import static java.lang.System.out; /** * Optional.ofNullable - 允许传递为 null 参数 * Optional.of - 如果传递的参数是 null,抛出异常 NullPointerException * Optional<String> b = Optional.of(s); */ public class Java8OptionalDemo { public static void main(String[] args) { out.println(strLength(Optional.of("abc"))); out.println(strLength(Optional.ofNullable(null))); } static Integer strLength(Optional<String> s) { return s.orElse("").length(); } }
運行輸出:
3 0
但是,這樣的程式碼,依然不是那麼地優雅。
針對這方面Groovy 提供了一個安全的屬性/方法存取操作符?.
user?.getUsername()?.toUpperCase();
Swift 也有類似的語法, 只作用在Optional的類型上。
Kotlin 中的可空型別
上面Java 8的例子,用Kotlin 來寫就顯得更加簡單優雅了:
package com.easy.kotlin fun main(args: Array<String>) { println(strLength(null)) println(strLength("abc")) } fun strLength(s: String?): Int { return s?.length ?: 0 }
其中,我們使用String? 同樣表達了Optional<String>
的意思,相較之下,哪個比較簡單?
一目了然。
還有Java 8 Optional 提供的orElse
s.orElse("").length();
這個東東,在Kotlin 是最最常見不過的Elvis 運算子了:
s?.length ?: 0
相較之下,還有什麼理由繼續用Java 8 的Optional 呢?
Kotlin 中的明星符號
?????????????????????????????????????? ?: ?: ?: ?: ?: ?: ?: ?: ?: ?: ?: ?: ?: ?: ?: ?: ?: ?: ?: ?: ?: ?: ?: ?: ?: ?: ?. ?. ?. ?. ?. ?. ?. ?. ?. ?. ?. ?. ?. ?. ?. ?. ?. ?. ?. ?. ?. ?. ?. ?. ?. ?. ?. ?. ?. ?.
以上是Java8中Optional與Kotlin中可空類型的使用對比詳情的詳細內容。更多資訊請關注PHP中文網其他相關文章!