首頁  >  文章  >  Java  >  Java8中Optional與Kotlin中可空類型的使用對比詳情

Java8中Optional與Kotlin中可空類型的使用對比詳情

黄舟
黄舟原創
2017-09-19 10:15:411839瀏覽

這篇文章主要為大家介紹了關於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? 同樣表達了Optionalf7e83be87db5cd2d9a8a0b8117b38cd4的意思,相較之下,哪個比較簡單?

一目了然。

還有Java 8 Optional 提供的orElse


s.orElse("").length();

這個東東,在Kotlin 是最最常見不過的Elvis 運算子了:


s?.length ?: 0

相較之下,還有什麼理由繼續用Java 8 的Optional 呢?

Kotlin 中的明星符號


??????????????????????????????????????
?: ?: ?: ?: ?: ?: ?: ?: ?: ?: ?: ?: ?: ?: ?: ?: ?: ?: ?: ?: ?: ?: ?: ?: ?: ?: 
?. ?. ?. ?. ?. ?. ?. ?. ?. ?. ?. ?. ?. ?. ?. ?. ?. ?. ?. ?. ?. ?. ?. ?. ?. ?. ?. ?. ?. ?.

以上是Java8中Optional與Kotlin中可空類型的使用對比詳情的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn