T - 包裹里元素的类型public class Opt<T> extends Object
Optional| 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(Predicate<? super T> predicate)
判断包裹里的值存在并且与给定的条件是否满足 (
Predicate.test(T)执行结果是否为true)
如果满足条件则返回本身
不满足条件或者元素本身为空时返回一个返回一个空的Opt |
<U> Opt<U> |
flatMap(Function<? super T,? extends Opt<? extends U>> mapper)
如果包裹里的值存在,就执行传入的操作(
Function.apply(T))并返回该操作返回值
如果不存在,返回一个空的Opt
和 map(java.util.function.Function<? super T, ? extends U>)的区别为 传入的操作返回值必须为 Opt |
<U> Opt<U> |
flattedMap(Function<? super T,? extends Optional<? extends U>> mapper)
如果包裹里的值存在,就执行传入的操作(
Function.apply(T))并返回该操作返回值
如果不存在,返回一个空的Opt
和 map(java.util.function.Function<? super T, ? extends U>)的区别为 传入的操作返回值必须为 Optional |
T |
get()
返回包裹里的元素,取不到则为
null,注意!!! |
Exception |
getException()
获取异常
当调用 ofTry(Func0)时,异常信息不会抛出,而是保存,调用此方法获取抛出的异常 |
int |
hashCode()
如果包裹内元素为空,则返回0,否则返回元素的
hashcode |
Opt<T> |
ifFail(Consumer<? super Throwable> action)
如果包裹内容失败了,则执行传入的操作(
Consumer.accept(T))
例如执行有异常就打印结果
Opt.ofTry(() -> 1 / 0).ifFail(Console::log);
|
Opt<T> |
ifPresent(Consumer<? super T> action)
如果包裹里的值存在,就执行传入的操作(
Consumer.accept(T))
例如如果值存在就打印结果
{@code
Opt.ofNullable("Hello Hutool!"). |
Opt<T> |
ifPresentOrElse(Consumer<? super T> action,
VoidFunc0 emptyAction)
如果包裹里的值存在,就执行传入的值存在时的操作(
Consumer.accept(T))
否则执行传入的值不存在时的操作(VoidFunc0中的VoidFunc0.call())
例如值存在就打印对应的值,不存在则用Console.error打印另一句字符串
{@code
Opt.ofNullable("Hello Hutool!"). |
boolean |
isEmpty()
判断包裹里元素的值是否不存在,不存在为
true,否则为false |
boolean |
isFail()
是否失败
当调用 ofTry(Func0)时,抛出异常则表示失败 |
boolean |
isPresent()
判断包裹里元素的值是否存在,存在为
true,否则为false |
<U> Opt<U> |
map(Function<? super T,? extends U> mapper)
|
<U> Opt<U> |
mapOrElse(Function<? super T,? extends U> mapper,
VoidFunc0 emptyAction)
如果包裹里的值存在,就执行传入的值存在时的操作(
Function.apply(Object))支持链式调用、转换为其他类型
否则执行传入的值不存在时的操作(VoidFunc0中的VoidFunc0.call())
如果值存在就转换为大写,否则用Console.error打印另一句字符串
String hutool = Opt.ofBlankAble("hutool").mapOrElse(String::toUpperCase, () -> Console.log("yes")).mapOrElse(String::intern, () -> Console.log("Value is not present~")).get();
|
static <T> Opt<T> |
of(T value)
返回一个包裹里元素不可能为空的
Opt |
static <T> Opt<T> |
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(Func0<T> supplier) |
Opt<T> |
or(Supplier<? extends Opt<? extends T>> supplier)
如果包裹里元素的值存在,就返回本身,如果不存在,则使用传入的操作执行后获得的
Opt |
T |
orElse(T other)
如果包裹里元素的值存在,则返回该值,否则返回传入的
other |
T |
orElseGet(Supplier<? extends T> supplier)
如果包裹里元素的值存在,则返回该值,否则返回传入的操作执行后的返回值
|
T |
orElseThrow()
如果包裹里的值存在,则返回该值,否则抛出
NoSuchElementException |
<X extends Throwable> |
orElseThrow(Function<String,? extends X> exceptionFunction,
String message)
如果包裹里的值存在,则返回该值,否则执行传入的操作,获取异常类型的返回值并抛出
往往是一个包含 自定义消息 构造器的异常 例如
{@code
Opt.ofNullable(null).orElseThrow(IllegalStateException::new, "Ops!
|
<X extends Throwable> |
orElseThrow(Supplier<? extends X> exceptionSupplier)
如果包裹里的值存在,则返回该值,否则执行传入的操作,获取异常类型的返回值并抛出
往往是一个包含无参构造器的异常 例如传入
IllegalStateException::new |
Opt<T> |
peek(Consumer<T> action)
如果包裹里元素的值存在,就执行对应的操作,并返回本身
如果不存在,返回一个空的
Opt
属于 ifPresent(java.util.function.Consumer<? super T>)的链式拓展 |
Opt<T> |
peeks(Consumer<T>... actions)
如果包裹里元素的值存在,就执行对应的操作集,并返回本身
如果不存在,返回一个空的
Opt
属于 ifPresent(java.util.function.Consumer<? super T>)的链式拓展
属于 peek(Consumer)的动态拓展 |
Stream<T> |
stream()
|
Optional<T> |
toOptional()
转换为
Optional对象 |
String |
toString()
返回包裹内元素调用
toString()的结果,不存在则返回null |
public static <T> Opt<T> empty()
OptT - 包裹里元素的类型public static <T> Opt<T> of(T value)
OptT - 包裹里元素的类型value - 包裹里的元素OptNullPointerException - 如果传入的元素为空,抛出 NPEpublic static <T> Opt<T> ofNullable(T value)
OptT - 包裹里元素的类型value - 传入需要包裹的元素Optpublic static <T> Opt<T> ofBlankAble(T value)
Opt,额外判断了空字符串的情况T - 包裹里元素的类型value - 传入需要包裹的元素Optpublic static <T,R extends Collection<T>> Opt<R> ofEmptyAble(R value)
List集合可能为空的Opt,额外判断了集合内元素为空的情况T - 包裹里元素的类型R - 集合值类型value - 传入需要包裹的元素,支持CharSequence、Map、Iterable、Iterator、Array类型Optpublic static <T> Opt<T> ofTry(Func0<T> supplier)
T - 类型supplier - 操作public T get()
null,注意!!!此处和Optional.get()不同的一点是本方法并不会抛出NoSuchElementException
如果元素为空,则返回null,如果需要一个绝对不能为null的值,则使用orElseThrow()
如果需要一个绝对不能为 null的值,则使用orElseThrow()
做此处修改的原因是,有时候我们确实需要返回一个null给前端,并且这样的时候并不少见
而使用 .orElse(null)需要写整整12个字符,用.get()就只需要6个啦
nullpublic boolean isEmpty()
true,否则为falsetrue,否则为falseOptional中的新函数public Exception getException()
ofTry(Func0)时,异常信息不会抛出,而是保存,调用此方法获取抛出的异常public boolean isFail()
ofTry(Func0)时,抛出异常则表示失败public Opt<T> ifFail(Consumer<? super Throwable> action) throws NullPointerException
action - 你想要执行的操作NullPointerException - 如果包裹里的值存在,但你传入的操作为null时抛出public boolean isPresent()
true,否则为falsetrue,否则为falsepublic Opt<T> ifPresent(Consumer<? super T> action)
Consumer.accept(T))
例如如果值存在就打印结果
Opt.ofNullable("Hello Hutool!").ifPresent(Console::log);
action - 你想要执行的操作NullPointerException - 如果包裹里的值存在,但你传入的操作为null时抛出public Opt<T> ifPresentOrElse(Consumer<? super T> action, VoidFunc0 emptyAction)
Consumer.accept(T))
否则执行传入的值不存在时的操作(VoidFunc0中的VoidFunc0.call())
例如值存在就打印对应的值,不存在则用Console.error打印另一句字符串
Opt.ofNullable("Hello Hutool!").ifPresentOrElse(Console::log, () -> Console.error("Ops!Something is wrong!"));
action - 包裹里的值存在时的操作emptyAction - 包裹里的值不存在时的操作NullPointerException - 如果包裹里的值存在时,执行的操作为 null, 或者包裹里的值不存在时的操作为 null,则抛出NPEpublic <U> Opt<U> mapOrElse(Function<? super T,? extends U> mapper, VoidFunc0 emptyAction)
Function.apply(Object))支持链式调用、转换为其他类型
否则执行传入的值不存在时的操作(VoidFunc0中的VoidFunc0.call())
如果值存在就转换为大写,否则用Console.error打印另一句字符串
String hutool = Opt.ofBlankAble("hutool").mapOrElse(String::toUpperCase, () -> Console.log("yes")).mapOrElse(String::intern, () -> Console.log("Value is not present~")).get();
U - map后新的类型mapper - 包裹里的值存在时的操作emptyAction - 包裹里的值不存在时的操作NullPointerException - 如果包裹里的值存在时,执行的操作为 null, 或者包裹里的值不存在时的操作为 null,则抛出NPEpublic Opt<T> filter(Predicate<? super T> predicate)
Predicate.test(T)执行结果是否为true)
如果满足条件则返回本身
不满足条件或者元素本身为空时返回一个返回一个空的Optpredicate - 给定的条件OptNullPointerException - 如果给定的条件为 null,抛出NPEpublic <U> Opt<U> map(Function<? super T,? extends U> mapper)
U - 操作返回值的类型mapper - 值存在时执行的操作Function.apply(T))并返回一个包裹了该操作返回值的Opt,
如果不存在,返回一个空的OptNullPointerException - 如果给定的操作为 null,抛出 NPEpublic <U> Opt<U> flatMap(Function<? super T,? extends Opt<? extends U>> mapper)
Function.apply(T))并返回该操作返回值
如果不存在,返回一个空的Opt
和 map(java.util.function.Function<? super T, ? extends U>)的区别为 传入的操作返回值必须为 OptU - 操作返回值的类型mapper - 值存在时执行的操作Function.apply(T))并返回该操作返回值
如果不存在,返回一个空的OptNullPointerException - 如果给定的操作为 null或者给定的操作执行结果为 null,抛出 NPEpublic <U> Opt<U> flattedMap(Function<? super T,? extends Optional<? extends U>> mapper)
Function.apply(T))并返回该操作返回值
如果不存在,返回一个空的Opt
和 map(java.util.function.Function<? super T, ? extends U>)的区别为 传入的操作返回值必须为 OptionalU - 操作返回值的类型mapper - 值存在时执行的操作Function.apply(T))并返回该操作返回值
如果不存在,返回一个空的OptNullPointerException - 如果给定的操作为 null或者给定的操作执行结果为 null,抛出 NPEOptional.flatMap(Function)public Opt<T> peek(Consumer<T> action) throws NullPointerException
Opt
action - 值存在时执行的操作NullPointerException - 如果值存在,并且传入的操作为 null@SafeVarargs public final Opt<T> peeks(Consumer<T>... actions) throws NullPointerException
Opt
属于 ifPresent(java.util.function.Consumer<? super T>)的链式拓展
属于 peek(Consumer)的动态拓展
actions - 值存在时执行的操作,动态参数,可传入数组,当数组为一个空数组时并不会抛出 NPENullPointerException - 如果值存在,并且传入的操作集中的元素为 nullpublic Opt<T> or(Supplier<? extends Opt<? extends T>> supplier)
Optsupplier - 不存在时的操作OptNullPointerException - 如果传入的操作为空,或者传入的操作执行后返回值为空,则抛出 NPEpublic T orElse(T other)
otherother - 元素为空时返回的值,有可能为 null.otherpublic T exceptionOrElse(T other)
other - 可选值otherpublic T orElseGet(Supplier<? extends T> supplier)
supplier - 值不存在时需要执行的操作,返回一个类型与 包裹里元素类型 相同的元素NullPointerException - 如果之不存在,并且传入的操作为空,则抛出 NPEpublic T orElseThrow()
NoSuchElementExceptionnull 的包裹里的值NoSuchElementException - 如果包裹里的值不存在则抛出该异常public <X extends Throwable> T orElseThrow(Supplier<? extends X> exceptionSupplier) throws X extends Throwable
往往是一个包含无参构造器的异常 例如传入IllegalStateException::new
X - 异常类型exceptionSupplier - 值不存在时执行的操作,返回值继承 ThrowableX - 如果值不存在NullPointerException - 如果值不存在并且 传入的操作为 null或者操作执行后的返回值为nullX extends Throwablepublic <X extends Throwable> T orElseThrow(Function<String,? extends X> exceptionFunction, String message) throws X extends Throwable
往往是一个包含 自定义消息 构造器的异常 例如
Opt.ofNullable(null).orElseThrow(IllegalStateException::new, "Ops!Something is wrong!");
X - 异常类型exceptionFunction - 值不存在时执行的操作,返回值继承 Throwablemessage - 作为传入操作执行时的参数,一般作为异常自定义提示语X - 如果值不存在NullPointerException - 如果值不存在并且 传入的操作为 null或者操作执行后的返回值为nullX extends Throwablepublic boolean equals(Object obj)
Opt相等
在以下情况下返回true
Opt 并且
equals()
public int hashCode()
hashcodeCopyright © 2025. All rights reserved.