JDK8新特性筆記(二) Optional

2021-10-09 15:46:10 字數 1784 閱讀 2283

**例子:

public

class

optionaldemo01

else

}}

執行結果:

ps2optional[chapter1.optional_demo.person@12a3a380]

optinal物件不為空

chapter1.optional_demo.person@12a3a380

0----------null

optional ps2 = optional.of(ps);

如果傳入的非null則會返回 optional括號內為物件例項

optional ps1 = optional.ofnullable(ps);

如果傳入的非null則會返回 optional括號內為物件例項,這裡和of()類似,但這裡傳入為null不會拋異常,後面可以在進行進一步判斷和處理。

optional

ps1 = optional.

ofnullable

(ps);if

(ps1.

ispresent()

)else

判斷不為空後,就用get()拿到物件,然後就可以呼叫物件內的get/set構造等方法

person person1 = null;

person persondemo =

newperson

("xiaogui",12

);person person = optional.

ofnullable

(person1)

.orelse

(persondemo)

;system.out.

println

("name:"

+person.

getname()

+";age:"

+person.

getage()

);

執行結果:

name:xiaogui;age:12
這種就是有物件傳入就用傳入的物件沒有就把自己建立的預設的傳入。

使用lambda表示式+orelse()的乙個例子:

person person1 = null;

person persondemo =

newperson

("xiaogui",12

);integer integer = optional.

ofnullable

(person1)

.map

(obj -

> obj.

getage()

).orelse(7

);system.out.

println

(integer)

;integer integer2 = optional.

ofnullable

(person1)

.map

(obj -

> obj.

getage()

).orelse(7

);system.out.

println

(integer2)

;

執行結果:

7   //這是第乙個傳入null的結果

12 //這是傳入第二個有初始值物件persondemo的結果

JDK8的新特性

這兩天開始看jdk8的新特性,先看了lembda表示式和stream,就乙個感覺,優雅。趕緊將這兩天的成果總結一下 lembda表示式是乙個簡潔 可傳遞的匿名函式,實現了把 塊賦值給乙個變數的功能 格式就是 parameters expression,需要注意的是 引數可以為空 引數為乙個值得時候,...

jdk8的新特性

lambda表示式 格式為 符號左邊為表示式需要的所有引數 符號右邊為表示式要執行的功能 將之前的匿名內部內作為引數傳遞直接可以使用lambda表示式完成 比如lists new arraylist new arraylist stirng public int compare string a,s...

JDK 8 新特性 Stream map 相關

和 clojure 裡面的 map 理解 是一樣的,可以分別獲取流中的每乙個元素,然後在對其做一些操作 1.遍歷字串集合然後轉換成大寫字母 public static void main string args system.out.println newnames stream map 方式 ne...