Option
表示一个可空对象,类似J8+的Optional
,并且可与Optional
相互转换,旨在减少lambda的使用
命名和用法则更像Rust的Option
基本用法
实例化
Option<String> s = Option.some("Hello, world!");
Option<String> n = Option.none();
匹配
for(String str: s) // 若s非空,则执行该块代码,取其值str
{
System.out.println("some: "+str);
}
if(s.isNone()) // s为空时执行
{
System.out.println("none");
}
与可空对象转换
@Nullable String str = awa;
Option<String> opt = Option.fromNullable(str);
若str
为null
,则得到Option.none()
,否则得到Option.some(str)
String s1 = opt.unwrapOr("default"); // 若opt非空,则得到其值,否则得到"default"
String s2 = opt.toNullable(); // 等价于unwrapOr(null)
与Optional获得
Optional<String> opt = Optional.of("Hello, world!");
Option<String> op = Option.fromOptional(opt);
Optional<String> opt = op.toOptional();
从wrapper转换
有时wrapper包装的对象可空,使用需要isPresent()额外判断
为严谨和简便,将其包装为Option
WrapperObject wrapper = ...;
Option<WrapperObject> opt = Option.fromWrapper(wrapper);
当包装非空时,得到Option.some(wrapper)
;否则得到Option.none()