Modifier and Type | Method and Description |
---|---|
static <T> Opt<T> |
empty()
返回一个空的
Opt |
boolean |
equals(Object obj)
判断传入参数是否与
Opt 相等
在以下情况下返回true
它也是一个 Opt 并且
它们包裹住的元素都为空 或者
它们包裹住的元素之间相互 equals()
|
T |
exceptionOrElse(T other)
异常则返回另一个可选值
|
Opt<T> |
filter(SerPredicate<? super T> predicate)
判断包裹里的值存在并且与给定的条件是否满足 (
Predicate.test(T) 执行结果是否为true)
如果满足条件则返回本身不满足条件或者元素本身为空时返回一个返回一个空的 Opt predicate测试报错,则返回一个空的 Opt ,并附带错误信息 |
<U> Opt<U> |
flattedMap(SerFunction<? super T,? extends Optional<? extends U>> mapper)
如果包裹里的值存在,就执行传入的操作(
Function.apply(T) )并返回该操作返回值
如果不存在,返回一个空的Opt
和 map(org.dromara.hutool.core.func.SerFunction<? super T, ? extends U>) 的区别为 传入的操作返回值必须为 Optional |
T |
getOrNull()
返回包裹里的元素,取不到则为
null ,注意!!! |
T |
getOrThrow()
返回包裹里的元素,取不到则抛出异常
|
Throwable |
getThrowable()
获取异常
当调用 ofTry(SerSupplier) 时,异常信息不会抛出,而是保存,调用此方法获取抛出的异常 |
int |
hashCode()
如果包裹内元素为空,则返回0,否则返回元素的
hashcode |
Opt<T> |
ifFail(Consumer<? super Throwable> action)
如果包裹内容失败了,则执行传入的操作(
Consumer.accept(T) )
例如执行有异常就打印结果
Opt.ofTry(() -> 1 / 0).ifFail(Console::log);
|
Opt<T> |
ifFail(Consumer<? super Throwable> action,
Class<? extends Throwable>... exs)
如果包裹内容失败了,同时是指定的异常执行传入的操作(
Consumer.accept(T) )
例如如果值存在就打印结果
Opt.ofTry(() -> 1 / 0).ifFail(Console::log, ArithmeticException.class);
|
Opt<T> |
ifPresent(SerConsumer<? super T> action)
如果包裹里的值存在,就执行传入的操作(
Consumer.accept(T) )
例如如果值存在就打印结果
{@code
Opt.ofNullable("Hello Hutool!"). |
Opt<T> |
ifPresents(SerConsumer<T>... actions)
如果包裹里元素的值存在,就执行对应的操作集,并返回本身
如果不存在,返回一个空的
Opt
属于 ifPresent(SerConsumer) 的动态拓展 |
boolean |
isEmpty()
判断包裹里元素的值是否不存在,不存在为
true ,否则为false |
boolean |
isFail()
是否失败
当调用 ofTry(SerSupplier) 时,抛出异常则表示失败 |
boolean |
isPresent()
判断包裹里元素的值是否存在,存在为
true ,否则为false |
<U> Opt<U> |
map(SerFunction<? super T,? extends U> mapper)
|
static <T> Opt<T> |
of(Optional<? extends T> optional)
根据
Optional 构造 Opt |
static <T> Opt<T> |
of(T value)
返回一个包裹里元素不可能为空的
Opt |
static <T extends CharSequence> |
ofBlankAble(T value)
返回一个包裹里元素可能为空的
Opt ,额外判断了空字符串的情况 |
static <T,R extends Collection<T>> |
ofEmptyAble(R value)
返回一个包裹里
List 集合可能为空的Opt ,额外判断了集合内元素为空的情况 |
static <T> Opt<T> |
ofNullable(T value)
返回一个包裹里元素可能为空的
Opt |
static <T> Opt<T> |
ofTry(SerSupplier<T> supplier) |
Opt<T> |
or(SerSupplier<? extends Opt<? extends T>> supplier)
如果包裹里元素的值存在,就返回本身,如果不存在,则使用传入的操作执行后获得的
Opt |
T |
orElse(T other)
如果包裹里元素的值存在,则返回该值,否则返回传入的
other |
T |
orElseGet(SerSupplier<? extends T> supplier)
如果包裹里元素的值存在,则返回该值,否则返回传入的操作执行后的返回值
|
Opt<T> |
orElseOpt(SerSupplier<? extends T> supplier)
如果包裹里元素的值存在,则返回该值,否则返回传入的操作执行后的返回值
|
T |
orElseRun(Runnable action)
如果包裹里元素的值存在,则返回该值,否则执行传入的操作
|
T |
orElseThrow()
如果包裹里的值存在,则返回该值,否则抛出
NoSuchElementException |
<X extends Throwable> |
orElseThrow(SerSupplier<? extends X> exceptionSupplier)
如果包裹里的值存在,则返回该值,否则执行传入的操作,获取异常类型的返回值并抛出
往往是一个包含无参构造器的异常 例如传入
IllegalStateException::new |
Stream<T> |
stream()
|
EasyStream<T> |
toEasyStream()
转换为
EasyStream 对象 |
Optional<T> |
toOptional()
转换为
Optional 对象 |
String |
toString()
返回包裹内元素调用
toString() 的结果,不存在则返回null |
public static <T> Opt<T> empty()
Opt
T
- 包裹里元素的类型public static <T> Opt<T> of(T value)
Opt
T
- 包裹里元素的类型value
- 包裹里的元素Opt
NullPointerException
- 如果传入的元素为空,抛出 NPE
public static <T> Opt<T> ofNullable(T value)
Opt
T
- 包裹里元素的类型value
- 传入需要包裹的元素Opt
public static <T extends CharSequence> Opt<T> ofBlankAble(T value)
Opt
,额外判断了空字符串的情况T
- 字符串类型value
- 传入需要包裹的元素Opt
public static <T,R extends Collection<T>> Opt<R> ofEmptyAble(R value)
List
集合可能为空的Opt
,额外判断了集合内元素为空的情况T
- 包裹里元素的类型R
- 集合值类型value
- 传入需要包裹的元素,支持CharSequence、Map、Iterable、Iterator、Array类型Opt
public static <T> Opt<T> ofTry(SerSupplier<T> supplier)
T
- 类型supplier
- 操作public static <T> Opt<T> of(Optional<? extends T> optional)
Optional
构造 Opt
T
- 包裹的元素类型optional
- optionalOpt
public T getOrNull()
null
,注意!!!此处和Optional.get()
不同的一点是本方法并不会抛出NoSuchElementException
如果元素为空,则返回null
,如果需要一个绝对不能为 null
的值,则使用orElseThrow()
做此处修改的原因是,有时候我们确实需要返回一个null给前端,并且这样的时候并不少见
而使用 .orElse(null)
需要写整整12个字符,用.get()
就只需要6个啦
null
public T getOrThrow() throws NoSuchElementException
NoSuchElementException
- 如果元素为空,则抛出此异常public boolean isEmpty()
true
,否则为false
true
,否则为false
public Throwable getThrowable()
ofTry(SerSupplier)
时,异常信息不会抛出,而是保存,调用此方法获取抛出的异常public boolean isFail()
ofTry(SerSupplier)
时,抛出异常则表示失败public Opt<T> ifFail(Consumer<? super Throwable> action) throws NullPointerException
action
- 你想要执行的操作NullPointerException
- 如果包裹里的值存在,但你传入的操作为null
时抛出@SafeVarargs public final Opt<T> ifFail(Consumer<? super Throwable> action, Class<? extends Throwable>... exs) throws NullPointerException
Consumer.accept(T)
)
例如如果值存在就打印结果
Opt.ofTry(() -> 1 / 0).ifFail(Console::log, ArithmeticException.class);
action
- 你想要执行的操作exs
- 限定的异常NullPointerException
- 如果包裹里的值存在,但你传入的操作为null
时抛出public boolean isPresent()
true
,否则为false
true
,否则为false
public Opt<T> ifPresent(SerConsumer<? super T> action)
Consumer.accept(T)
)
例如如果值存在就打印结果
Opt.ofNullable("Hello Hutool!").ifPresent(Console::log);
action
- 你想要执行的操作NullPointerException
- 如果包裹里的值存在,但你传入的操作为null
时抛出public Opt<T> filter(SerPredicate<? super T> predicate)
Predicate.test(T)
执行结果是否为true)
如果满足条件则返回本身Opt
Opt
,并附带错误信息predicate
- 给定的条件Opt
NullPointerException
- 如果给定的条件为 null
抛出NPE
public <U> Opt<U> map(SerFunction<? super T,? extends U> mapper)
U
- 操作返回值的类型mapper
- 值存在时执行的操作SerFunction.applying(Object)
)并返回一个包裹了该操作返回值的Opt
,
如果不存在,返回一个空的Opt
NullPointerException
- 如果给定的操作为 null
,抛出 NPE
public <U> Opt<U> flattedMap(SerFunction<? super T,? extends Optional<? extends U>> mapper)
Function.apply(T)
)并返回该操作返回值
如果不存在,返回一个空的Opt
和 map(org.dromara.hutool.core.func.SerFunction<? super T, ? extends U>)
的区别为 传入的操作返回值必须为 Optional
U
- 操作返回值的类型mapper
- 值存在时执行的操作Function.apply(T)
)并返回该操作返回值
如果不存在,返回一个空的Opt
NullPointerException
- 如果给定的操作为 null
或者给定的操作执行结果为 null
,抛出 NPE
Optional.flatMap(Function)
@SafeVarargs public final Opt<T> ifPresents(SerConsumer<T>... actions) throws NullPointerException
Opt
属于 ifPresent(SerConsumer)
的动态拓展
actions
- 值存在时执行的操作,动态参数,可传入数组,当数组为一个空数组时并不会抛出 NPE
NullPointerException
- 如果值存在,并且传入的操作集中的元素为 null
public Opt<T> or(SerSupplier<? extends Opt<? extends T>> supplier)
Opt
supplier
- 不存在时的操作Opt
NullPointerException
- 如果传入的操作为空,或者传入的操作执行后返回值为空,则抛出 NPE
public T orElse(T other)
other
other
- 元素为空时返回的值,有可能为 null
.other
public T exceptionOrElse(T other)
other
- 可选值other
public T orElseGet(SerSupplier<? extends T> supplier)
supplier
- 值不存在时需要执行的操作,返回一个类型与 包裹里元素类型 相同的元素NullPointerException
- 如果之不存在,并且传入的操作为空,则抛出 NPE
public Opt<T> orElseOpt(SerSupplier<? extends T> supplier)
supplier
- 值不存在时需要执行的操作,返回一个类型与 包裹里元素类型 相同的元素NullPointerException
- 如果之不存在,并且传入的操作为空,则抛出 NPE
public T orElseRun(Runnable action)
action
- 值不存在时执行的操作NullPointerException
- 如果值不存在,并且传入的操作为 null
public T orElseThrow()
NoSuchElementException
null
的包裹里的值NoSuchElementException
- 如果包裹里的值不存在则抛出该异常public <X extends Throwable> T orElseThrow(SerSupplier<? extends X> exceptionSupplier) throws X extends Throwable
往往是一个包含无参构造器的异常 例如传入IllegalStateException::new
X
- 异常类型exceptionSupplier
- 值不存在时执行的操作,返回值继承 Throwable
X
- 如果值不存在NullPointerException
- 如果值不存在并且 传入的操作为 null
或者操作执行后的返回值为null
X extends Throwable
public EasyStream<T> toEasyStream()
EasyStream
对象EasyStream
对象public boolean equals(Object obj)
Opt
相等
在以下情况下返回true
Opt
并且
equals()
public int hashCode()
hashcode
Copyright © 2025. All rights reserved.