摘要:創建一個指定引用的,若引用為則表示引用缺失,并返回一個。返回包含的實例,該實例必須存在,如果不存在將會拋出異常。說明有三個方法沒有作解釋,主要是擔心相關知識不理解,容易做出錯誤的翻譯,望請諒解
Guava Optional Class原文地址
譯者
Optional 是一個不可變對象,用來包含一個非null對象。Optional使用absent來表達null值。該類提供了很多實用的方法來處理值是否可用,從而避免對null值進行檢查。
類的聲明以下是com.google.common.base.Optional
@GwtCompatible(serializable=true) public abstract class Optional類的方法 方法和描述extends Object implements Serializable
static
創建一個引用缺失的Optional實例。
abstract Set
返回一個不可變的單例的set集合,如果引用存在,則返回一個只包含一個元素的set集合,否則,返回一個空的不可變set集合。
abstract boolean equals(Object object)
該equals對象屬于Optional類的方法,比較的規則如下: 1.若給予的對象不是Optional及其子類,直接返回false 2.給予的對象是Optional及其子類,則比較改optional中所包含的引用的值。
static
創建一個指定引用的Optional,若引用為null則表示引用缺失,并返回一個absent()①。
abstract T get()
返回包含的實例,該實例必須存在,如果不存在將會拋出java.lang.IllegalStateException異常。
abstract int hashCode()
返回該實例的哈希碼。
abstract boolean isPresent()
如果Optional包含非null引用實例則返回true。
static
創建一個指定引用的Optional實例,若引用為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)
如果包含的實例存在,則返回,如果不存在則返回給予的默認值。
abstract T orNull()
如果包含的實例存在則返回該實例,如果不存在則返回null。
static
Returns the value of each present instance from the supplied optionals,in order, skipping over occurrences of absent().
abstract String toString()
返回實例的字符串表示,默認實現只有兩種表示方法若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 類實例
使用任何編輯器創建一下程序:
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校驗結果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; } }
在控制臺使用 javac 命令編譯,編譯結果如下:
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
注①:請看一下來自Guava的部分代碼
public static Optional fromNullable(Object nullableReference) { return ((Optional) (nullableReference != null ? new Present(nullableReference) : absent())); }
抽象類Optional只有兩個實現類Present和absent,這兩個類分別表示存在以及缺失狀態。調用fromNullable方法
并且指定的引用為null的時候,會調用absent方法,來生成Optional對象,實際上與Optional.absent()一致。
說明:有三個方法沒有作解釋,主要是擔心相關知識不理解,容易做出錯誤的翻譯,望請諒解!
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/65221.html
摘要:全文為這些年,我曾閱讀深入理解過或正在閱讀學習即將閱讀的一些優秀經典前端后端書籍。當然,如果您喜歡這篇文章,可以動手點點贊或者收藏。 全文為這些年,我曾閱讀、深入理解過(或正在閱讀學習、即將閱讀)的一些優秀經典前端/Java后端書籍。全文為純原創,且將持續更新,未經許可,不得進行轉載。當然,如果您喜歡這篇文章,可以動手點點贊或者收藏。 基礎 基礎書籍 進階 進階階段,深入學習的書...
摘要:全文為這些年,我曾閱讀深入理解過或正在閱讀學習即將閱讀的一些優秀經典前端后端書籍。當然,如果您喜歡這篇文章,可以動手點點贊或者收藏。 全文為這些年,我曾閱讀、深入理解過(或正在閱讀學習、即將閱讀)的一些優秀經典前端/Java后端書籍。全文為純原創,且將持續更新,未經許可,不得進行轉載。當然,如果您喜歡這篇文章,可以動手點點贊或者收藏。 基礎 基礎書籍 進階 進階階段,深入學習的書...
摘要:全文為這些年,我曾閱讀深入理解過或正在閱讀學習即將閱讀的一些優秀經典前端后端書籍。當然,如果您喜歡這篇文章,可以動手點點贊或者收藏。 全文為這些年,我曾閱讀、深入理解過(或正在閱讀學習、即將閱讀)的一些優秀經典前端/Java后端書籍。全文為純原創,且將持續更新,未經許可,不得進行轉載。當然,如果您喜歡這篇文章,可以動手點點贊或者收藏。 基礎 基礎書籍 進階 進階階段,深入學習的書...
摘要:全文為這些年,我曾閱讀深入理解過或正在閱讀學習即將閱讀的一些優秀經典前端后端書籍。當然,如果您喜歡這篇文章,可以動手點點贊或者收藏。 全文為這些年,我曾閱讀、深入理解過(或正在閱讀學習、即將閱讀)的一些優秀經典前端/Java后端書籍。全文為純原創,且將持續更新,未經許可,不得進行轉載。當然,如果您喜歡這篇文章,可以動手點點贊或者收藏。 基礎 基礎書籍 進階 進階階段,深入學習的書...
摘要:已獲原作者授權原系列地址簡介一提到這個詞很多人首先想到的是餐館里的菜單雖然餐館菜單和計算機程序中的菜單看起來一點也不像但他們確實有很多共同點在餐館中菜單列舉了所有菜品和飲料在計算機程序中菜單通過圖形界面展示了應用程序可用的命令和功能在用戶界 已獲原作者授權. 原系列地址: Python Tkinter 簡介 一提到menu這個詞, 很多人首先想到的是餐館里的菜單. 雖然餐館菜單和計算...
閱讀 3403·2021-11-24 09:38
閱讀 3189·2021-11-22 09:34
閱讀 2098·2021-09-22 16:03
閱讀 2349·2019-08-29 18:37
閱讀 371·2019-08-29 16:15
閱讀 1761·2019-08-26 13:56
閱讀 853·2019-08-26 12:21
閱讀 2198·2019-08-26 12:15