首頁 Java java教程 Java8中Optional與Kotlin中可空類型的使用對比詳情

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

Sep 19, 2017 am 10:15 AM
java8 kotlin optional

這篇文章主要為大家介紹了關於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中文網其他相關文章!

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

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它們
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

使用Vue.js和Kotlin語言開發安卓應用程式的一些技巧 使用Vue.js和Kotlin語言開發安卓應用程式的一些技巧 Jul 31, 2023 pm 02:17 PM

使用Vue.js和Kotlin語言開發安卓應用程式的一些技巧隨著行動應用的普及和用戶需求的不斷增長,安卓應用的開發越來越受到開發者的關注。在開發安卓應用程式時,選擇合適的技術堆疊至關重要。近年來,Vue.js和Kotlin語言逐漸成為安卓應用程式開發的熱門選擇。本文將介紹使用Vue.js和Kotlin語言開發安卓應用程式的一些技巧,並給出對應的程式碼範例。一、搭建開發環境在開始

Java 8中如何計算一年前或一年後的日期? Java 8中如何計算一年前或一年後的日期? Apr 26, 2023 am 09:22 AM

Java8計算一年前或一年後的日期利用minus()方法計算一年前的日期packagecom.shxt.demo02;importjava.time.LocalDate;importjava.time.temporal.ChronoUnit;publicclassDemo09{publicstaticvoidmain(String[]args ){LocalDatetoday=LocalDate.now();LocalDatepreviousYear=today.minus(1,ChronoUni

如何在 Debian 上安裝 Kotlin 程式語言 12 如何在 Debian 上安裝 Kotlin 程式語言 12 Feb 20, 2024 am 09:42 AM

Kotlin是一種靜態型別程式語言,已經在軟體開發領域引起了巨大的關注。它簡潔易懂的語法、與Java的良好兼容性以及豐富的工具支持,為開發人員提供了許多優勢,因此許多開發者都選擇Kotlin作為他們的首選語言。在Debian上安裝Kotlin程式語言12Bookworm步驟1。首先更新現有系統包。開啟終端機並輸入以下命令:sudoaptupdatesudoaptupgrade這些命令將取得可用更新清單並升級目前程式包,從而確保您的系統是最新的。第2步。安裝Java。 Kotlin在Java虛擬機器(J

Java函數與Kotlin語言函數的差別? Java函數與Kotlin語言函數的差別? Apr 24, 2024 am 08:24 AM

Java和Kotlin函數的區別:語法:Java函數需要明確參數類型和名稱,而Kotlin可以省略類型並使用lambda表達式;參數:Kotlin可以使用更簡潔的語法省略參數類型;返回值:Kotlin可以省略返回值類型,預設為Unit;擴充函數:Kotlin可以為現有類別新增函數,而Java需要透過繼承實作類似功能;實例方法呼叫:Kotlin可以省略物件名,使用更簡潔的語法。

如何利用Redis和Kotlin開發非同步任務隊列功能 如何利用Redis和Kotlin開發非同步任務隊列功能 Sep 21, 2023 am 10:58 AM

如何利用Redis和Kotlin開發非同步任務佇列功能引言:隨著網路的發展,非同步任務的處理變得越來越重要。在開發過程中,經常會遇到一些需要耗時的任務,例如發送郵件、處理大數據等等。為了提高系統的效能和可擴展性,我們可以使用非同步任務佇列來處理這些任務。本文將介紹如何利用Redis和Kotlin來開發一個簡單的非同步任務佇列,並提供具體的程式碼範例。一、什麼是異步任

Java中的Optional常用方法有哪些 Java中的Optional常用方法有哪些 May 09, 2023 am 11:34 AM

前言Java中的Optional是容器對象,它可以包含一個非空值,也可以為空。它的主要作用是在編寫程式碼時避免空指標異常。 java8中Optional的完整用法如下:1.建立Optional物件可以透過of()方法建立一個包含非空值的Optional對象,例如:Optionaloptional=Optional.of("value");也可以透過ofNullable()方法建立一個包含可能為空的值的Optional對象,例如:Optionaloptional=Optiona

如何使用Java 8計算一週後的日期? 如何使用Java 8計算一週後的日期? Apr 21, 2023 pm 11:01 PM

Java8如何計算一週後的日期這個例子會計算一週後的日期。 LocalDate日期不包含時間訊息,它的plus()方法用來增加天、週、月,ChronoUnit類別宣告了這些時間單位。由於LocalDate也是不變型,回傳後一定要用變數賦值。 packagecom.shxt.demo02;importjava.time.LocalDate;importjava.time.temporal.ChronoUnit;publicclassDemo08{publicstaticvoidmain(String[

使用Vue.js和Kotlin語言開發國際化支援的行動應用解決方案 使用Vue.js和Kotlin語言開發國際化支援的行動應用解決方案 Jul 31, 2023 pm 12:01 PM

使用Vue.js和Kotlin語言開發國際化支援的行動應用解決方案隨著全球化進程的加速進行,越來越多的行動應用需要提供多語言支援來滿足全球用戶的需求。在開發過程中,我們可以使用Vue.js和Kotlin語言來實現國際化的功能,使應用程式能夠在不同的語言環境下正常運作。一、Vue.js國際化支援Vue.js是一款受歡迎的JavaScript框架,提供了豐富的工具和特

See all articles