一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - Java8中Optional類型和Kotlin中可空類型的使用對比

Java8中Optional類型和Kotlin中可空類型的使用對比

2021-01-05 11:00KotinChina編程社區 Java教程

這篇文章主要給大家介紹了關于Java8中Optional類型和Kotlin中可空類型的使用對比,文中通過示例代碼給大家介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。

本文主要給大家介紹了關于Java8Optional類型和Kotlin中可空類型使用的相關內容,分享出來供大家參考學習,下面話不多說了,來一起看看詳細的介紹:

在 Java 8中,我們可以使用 Optional 類型來表達可空的類型。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
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();
 }
}

運行輸出:

?
1
2
3
0

但是,這樣的代碼,依然不是那么地優雅。

針對這方面 Groovy 提供了一種安全的屬性/方法訪問操作符 ?.

?
1
user?.getUsername()?.toUpperCase();

Swift 也有類似的語法, 只作用在 Optional 的類型上。

Kotlin 中的可空類型

上面 Java 8的例子,用 Kotlin 來寫就顯得更加簡單優雅了:

?
1
2
3
4
5
6
7
8
9
10
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

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

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

?
1
s?.length ?: 0

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

Kotlin 中的明星符號

?
1
2
3
??????????????????????????????????????
?: ?: ?: ?: ?: ?: ?: ?: ?: ?: ?: ?: ?: ?: ?: ?: ?: ?: ?: ?: ?: ?: ?: ?: ?: ?:
?. ?. ?. ?. ?. ?. ?. ?. ?. ?. ?. ?. ?. ?. ?. ?. ?. ?. ?. ?. ?. ?. ?. ?. ?. ?. ?. ?. ?. ?.

示例源代碼工程Github 地址:

https://github.com/EasyKotlin/java_optional_vs_kotlin_nullable_type

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對服務器之家的支持。

原文鏈接:http://www.jianshu.com/p/515244085e8e

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 校服下的白嫩小乳尖h1v1 | 免费视频左左视频 | 91av俱乐部 | 啪啪艹| 甜蜜调教 | 色播影院性播影院私人影院 | 欧美老人与小伙子性生交 | 亚洲日本aⅴ片在线观看香蕉 | 国产高清在线精品一区 | 91真人毛片一级在线播放 | 好大好爽好涨太深了小喜 | 无限好资源免费观看 | 久久国产精品永久免费网站 | 91在线精品国产 | 动漫女性扒开尿口羞羞漫画 | www.一级片.com| 成人黄页网站 | 性欧美13处丶14处 | 男人使劲躁女人视频免费 | 国产一卡2卡3卡四卡精品网站 | 欧美亚洲韩国 | 2019国内精品久久久久久 | 欧美夫妇野外交换hd高清版 | 国产精品欧美韩国日本久久 | 天堂在线观看中文字幕 | 99资源站 | 国产综合成人久久大片91 | 国产午夜久久精品 | 亚洲一级特黄 | 欧美同性猛男野外gay免费 | 亚洲一区 在线播放 | 亚洲 另类 欧美 变态屎尿 | 婷婷国产在线 | 521色香蕉网站在线观看 | 把老师操了 | 啪啪免费网址 | caoporn草棚在线视频 | 女学生被老师调教在教室 | 精品91自产拍在线 | 美女脱了内裤打开腿让人桶网站o | 欧美国产精品久久 |