從字面意思理解它的意思是可選擇的。optional是jdk8**現的,對於判斷null有非常好的用法,它是乙個容器類,代表乙個值是存在還是不存在,之前我們用null來表示乙個值是否存在,現在我們可以用它來更清楚的表示。
我們首先看下它有哪些常用的方法。
public
final
class
optional
private
optional
(t value)
public
static
optional
of(t value)
public
static
optional
ofnullable
(t value)
public t get()
return value;
}public
boolean
ispresent()
public
void
ifpresent
(consumer<
?super t> consumer)
public optional
filter
(predicate<
?super t> predicate)
public
optional
map(function<
?super t,
?extendsu}
public
optional
flatmap
(function<
?super t, optional
}public t orelse
(t other)
public t orelseget
(supplier<
?extends
t> other)
public
throwable
> t orelsethrow
(supplier<
?extends
x> exceptionsupplier)
throws x
else
}
這是它的方法,我們講幾個比較常用的
public
static
void
main
(string[
] args)
列印結果
我是optional物件例項yipeng.shen.testservice.lambda.person@2fc14f68
我是乙個空optional例項optional.empty
我不為null++
++++
++++
+++optional[yipeng.shen.testservice.lambda.person@19dfb72a
]我為null所以建立乙個空例項++
++++
++++
+++optional.empty
true
yipeng.shen.testservice.lambda.person@2fc14f68
true
false
yipeng.shen.testservice.lambda.person@17c68925我是原始值我的名字為張三
yipeng.shen.testservice.lambda.person@7e0ea639我是新建立的預設值我的名字為李四
張三王五
JDK8中Optional的方法使用
1.optional.of 或者optional.ofnullable 建立optional物件,差別在於of不允許引數是null,而ofnullable則無限制。test public void testoptional 2.ispresent 判斷值是否存在 ispresent判斷值是否存在 s...
JDK8新特性筆記(二) Optional
例子 public class optionaldemo01 else 執行結果 ps2optional chapter1.optional demo.person 12a3a380 optinal物件不為空 chapter1.optional demo.person 12a3a380 0 null...
jdk8新特性 Optional物件的了解使用
獲取optional物件 轉換optional值 過濾值除了轉換值之外,optional也提供了過濾值的方法filter filter 接受乙個 predicate 引數,如果測試結果為true,返回測試結果為 true 對應的值。如果測試結果為 false,會返回乙個空的 optional。opt...