摘要:創(chuàng)建一個(gè)指定引用的,若引用為則表示引用缺失,并返回一個(gè)。返回包含的實(shí)例,該實(shí)例必須存在,如果不存在將會(huì)拋出異常。說明有三個(gè)方法沒有作解釋,主要是擔(dān)心相關(guān)知識(shí)不理解,容易做出錯(cuò)誤的翻譯,望請(qǐng)諒解
Guava Optional Class原文地址
譯者
Optional 是一個(gè)不可變對(duì)象,用來包含一個(gè)非null對(duì)象。Optional使用absent來表達(dá)null值。該類提供了很多實(shí)用的方法來處理值是否可用,從而避免對(duì)null值進(jìn)行檢查。
類的聲明以下是com.google.common.base.Optional
@GwtCompatible(serializable=true) public abstract class Optional類的方法 方法和描述extends Object implements Serializable
static
創(chuàng)建一個(gè)引用缺失的Optional實(shí)例。
abstract Set
返回一個(gè)不可變的單例的set集合,如果引用存在,則返回一個(gè)只包含一個(gè)元素的set集合,否則,返回一個(gè)空的不可變set集合。
abstract boolean equals(Object object)
該equals對(duì)象屬于Optional類的方法,比較的規(guī)則如下: 1.若給予的對(duì)象不是Optional及其子類,直接返回false 2.給予的對(duì)象是Optional及其子類,則比較改optional中所包含的引用的值。
static
創(chuàng)建一個(gè)指定引用的Optional,若引用為null則表示引用缺失,并返回一個(gè)absent()①。
abstract T get()
返回包含的實(shí)例,該實(shí)例必須存在,如果不存在將會(huì)拋出java.lang.IllegalStateException異常。
abstract int hashCode()
返回該實(shí)例的哈希碼。
abstract boolean isPresent()
如果Optional包含非null引用實(shí)例則返回true。
static
創(chuàng)建一個(gè)指定引用的Optional實(shí)例,若引用為null則快速失敗。
abstract Optional
Returns this Optional if it has a value present; secondChoice otherwise.
abstract T or(Supplier extends T> supplier)
Returns the contained instance if it is present; supplier.get() otherwise.
abstract T or(T defaultValue)
如果包含的實(shí)例存在,則返回,如果不存在則返回給予的默認(rèn)值。
abstract T orNull()
如果包含的實(shí)例存在則返回該實(shí)例,如果不存在則返回null。
static
Returns the value of each present instance from the supplied optionals,in order, skipping over occurrences of absent().
abstract String toString()
返回實(shí)例的字符串表示,默認(rèn)實(shí)現(xiàn)只有兩種表示方法若Optional中包含的引用缺失則返回optional.absent()否則返回optional.of(引用的值)
abstract
If the instance is present, it is transformed with the given Function; otherwise, absent() is returned.方法繼承
該類所繼承的方法來自類Object:
java.lang.ObjectOptional 類實(shí)例
使用任何編輯器創(chuàng)建一下程序:
GuavaTester.java
import com.google.common.base.Optional; public class GuavaTester { public static void main(String args[]) { GuavaTester guavaTester = new GuavaTester(); Integer value1 = null; Integer value2 = new Integer(10); //Optional.fromNullable - allows passed parameter to be null. Optional校驗(yàn)結(jié)果a = Optional.fromNullable(value1); //Optional.of - throws NullPointerException if passed parameter is null Optional b = Optional.of(value2); System.out.println(guavaTester.sum(a,b)); } public Integer sum(Optional a, Optional b) { //Optional.isPresent - checks the value is present or not System.out.println("First parameter is present: " + a.isPresent()); System.out.println("Second parameter is present: " + b.isPresent()); //Optional.or - returns the value if present otherwise returns //the default value passed. Integer value1 = a.or(new Integer(0)); //Optional.get - gets the value, value should be present Integer value2 = b.get(); return value1 + value2; } }
在控制臺(tái)使用 javac 命令編譯,編譯結(jié)果如下:
C:Guava>javac GuavaTester.java Now run the GuavaTester to see the result. C:Guava>java GuavaTester See the result.
First parameter is present: false Second parameter is present: true 10
注①:請(qǐng)看一下來自Guava的部分代碼
public static Optional fromNullable(Object nullableReference) { return ((Optional) (nullableReference != null ? new Present(nullableReference) : absent())); }
抽象類Optional只有兩個(gè)實(shí)現(xiàn)類Present和absent,這兩個(gè)類分別表示存在以及缺失狀態(tài)。調(diào)用fromNullable方法
并且指定的引用為null的時(shí)候,會(huì)調(diào)用absent方法,來生成Optional對(duì)象,實(shí)際上與Optional.absent()一致。
說明:有三個(gè)方法沒有作解釋,主要是擔(dān)心相關(guān)知識(shí)不理解,容易做出錯(cuò)誤的翻譯,望請(qǐng)諒解!
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/65221.html
摘要:全文為這些年,我曾閱讀深入理解過或正在閱讀學(xué)習(xí)即將閱讀的一些優(yōu)秀經(jīng)典前端后端書籍。當(dāng)然,如果您喜歡這篇文章,可以動(dòng)手點(diǎn)點(diǎn)贊或者收藏。 全文為這些年,我曾閱讀、深入理解過(或正在閱讀學(xué)習(xí)、即將閱讀)的一些優(yōu)秀經(jīng)典前端/Java后端書籍。全文為純?cè)瓌?chuàng),且將持續(xù)更新,未經(jīng)許可,不得進(jìn)行轉(zhuǎn)載。當(dāng)然,如果您喜歡這篇文章,可以動(dòng)手點(diǎn)點(diǎn)贊或者收藏。 基礎(chǔ) 基礎(chǔ)書籍 進(jìn)階 進(jìn)階階段,深入學(xué)習(xí)的書...
摘要:全文為這些年,我曾閱讀深入理解過或正在閱讀學(xué)習(xí)即將閱讀的一些優(yōu)秀經(jīng)典前端后端書籍。當(dāng)然,如果您喜歡這篇文章,可以動(dòng)手點(diǎn)點(diǎn)贊或者收藏。 全文為這些年,我曾閱讀、深入理解過(或正在閱讀學(xué)習(xí)、即將閱讀)的一些優(yōu)秀經(jīng)典前端/Java后端書籍。全文為純?cè)瓌?chuàng),且將持續(xù)更新,未經(jīng)許可,不得進(jìn)行轉(zhuǎn)載。當(dāng)然,如果您喜歡這篇文章,可以動(dòng)手點(diǎn)點(diǎn)贊或者收藏。 基礎(chǔ) 基礎(chǔ)書籍 進(jìn)階 進(jìn)階階段,深入學(xué)習(xí)的書...
摘要:全文為這些年,我曾閱讀深入理解過或正在閱讀學(xué)習(xí)即將閱讀的一些優(yōu)秀經(jīng)典前端后端書籍。當(dāng)然,如果您喜歡這篇文章,可以動(dòng)手點(diǎn)點(diǎn)贊或者收藏。 全文為這些年,我曾閱讀、深入理解過(或正在閱讀學(xué)習(xí)、即將閱讀)的一些優(yōu)秀經(jīng)典前端/Java后端書籍。全文為純?cè)瓌?chuàng),且將持續(xù)更新,未經(jīng)許可,不得進(jìn)行轉(zhuǎn)載。當(dāng)然,如果您喜歡這篇文章,可以動(dòng)手點(diǎn)點(diǎn)贊或者收藏。 基礎(chǔ) 基礎(chǔ)書籍 進(jìn)階 進(jìn)階階段,深入學(xué)習(xí)的書...
摘要:全文為這些年,我曾閱讀深入理解過或正在閱讀學(xué)習(xí)即將閱讀的一些優(yōu)秀經(jīng)典前端后端書籍。當(dāng)然,如果您喜歡這篇文章,可以動(dòng)手點(diǎn)點(diǎn)贊或者收藏。 全文為這些年,我曾閱讀、深入理解過(或正在閱讀學(xué)習(xí)、即將閱讀)的一些優(yōu)秀經(jīng)典前端/Java后端書籍。全文為純?cè)瓌?chuàng),且將持續(xù)更新,未經(jīng)許可,不得進(jìn)行轉(zhuǎn)載。當(dāng)然,如果您喜歡這篇文章,可以動(dòng)手點(diǎn)點(diǎn)贊或者收藏。 基礎(chǔ) 基礎(chǔ)書籍 進(jìn)階 進(jìn)階階段,深入學(xué)習(xí)的書...
摘要:已獲原作者授權(quán)原系列地址簡介一提到這個(gè)詞很多人首先想到的是餐館里的菜單雖然餐館菜單和計(jì)算機(jī)程序中的菜單看起來一點(diǎn)也不像但他們確實(shí)有很多共同點(diǎn)在餐館中菜單列舉了所有菜品和飲料在計(jì)算機(jī)程序中菜單通過圖形界面展示了應(yīng)用程序可用的命令和功能在用戶界 已獲原作者授權(quán). 原系列地址: Python Tkinter 簡介 一提到menu這個(gè)詞, 很多人首先想到的是餐館里的菜單. 雖然餐館菜單和計(jì)算...
閱讀 3420·2021-11-24 09:38
閱讀 3196·2021-11-22 09:34
閱讀 2112·2021-09-22 16:03
閱讀 2373·2019-08-29 18:37
閱讀 383·2019-08-29 16:15
閱讀 1774·2019-08-26 13:56
閱讀 867·2019-08-26 12:21
閱讀 2208·2019-08-26 12:15