{@code - * Opt.ofNullable("Hello Hutool!").ifPresent(Console::log); - * }- */ - public void ifPresent(Consumer super T> action) { - if (value != null) { - action.accept(value); - } - } - - /** - * 如果包裹里的值存在,就执行传入的值存在时的操作({@link Consumer#accept}) - * 否则执行传入的值不存在时的操作({@link VoidFunc0}中的{@link VoidFunc0#call()}) - * - * @param action 包裹里的值存在时的操作 - * @param emptyAction 包裹里的值不存在时的操作 - * @throws NullPointerException 如果包裹里的值存在时,执行的操作为 {@code null}, 或者包裹里的值不存在时的操作为 {@code null},则抛出{@code NPE} - * @apiNote 例如值存在就打印对应的值,不存在则用{@code Console.error}打印另一句字符串 - *
{@code - * Opt.ofNullable("Hello Hutool!").ifPresentOrElse(Console::log, () -> Console.error("Ops!Something is wrong!")); - * }- * @since 9 这是jdk9{@link java.util.Optional}中的新函数 - */ - public void ifPresentOrElse(Consumer super T> action, VoidFunc0 emptyAction) { - if (value != null) { - action.accept(value); - } else { - emptyAction.callWithRuntimeException(); - } - } - - /** - * 判断包裹里的值存在并且与给定的条件是否满足 ({@link Predicate#test}执行结果是否为true) - * 如果满足条件则返回本身 - * 不满足条件或者元素本身为空时返回一个返回一个空的{@code OptionalBean} - * - * @param predicate 给定的条件 - * @return 如果满足条件则返回本身, 不满足条件或者元素本身为空时返回一个返回一个空的{@code OptionalBean} - * @throws NullPointerException 如果给定的条件为 {@code null},抛出{@code NPE} - */ - public OptionalBean
{@code - * Stream- * @since 9 这是jdk9{@link java.util.Optional}中的新函数 - */ - public Stream> os = .. - * Stream s = os.flatMap(Opt::stream) - * }
{@code - * Opt.ofNullable(null).orElseThrow(IllegalStateException::new, "Ops!Something is wrong!"); - * }- * @author VampireAchao - */ - public
+ * 如果需要一个绝对不能为 {@code null}的值,则使用{@link #orElseThrow()}
* 做此处修改的原因是,有时候我们确实需要返回一个null给前端,并且这样的时候并不少见
* 而使用 {@code .orElse(null)}需要写整整12个字符,用{@code .get()}就只需要6个啦
+ *
+ * @return 包裹里的元素,有可能为{@code null}
*/
public T get() {
return value;
@@ -141,12 +147,13 @@ public class Opt 例如如果值存在就打印结果
*
+ * 例如值存在就打印对应的值,不存在则用{@code Console.error}打印另一句字符串
* 该方法能将 Opt 中的元素传递给 {@link Stream}
* 往往是一个包含无参构造器的异常 例如传入{@code IllegalStateException::new}
*
* @param 往往是一个包含 自定义消息 构造器的异常 例如
+ * {@code
* Opt.ofNullable("Hello Hutool!").ifPresent(Console::log);
* }
+ *
+ * @param action 你想要执行的操作
+ * @throws NullPointerException 如果包裹里的值存在,但你传入的操作为{@code null}时抛出
*/
public void ifPresent(Consumer super T> action) {
if (value != null) {
@@ -158,14 +165,15 @@ public class Opt{@code
* Opt.ofNullable("Hello Hutool!").ifPresentOrElse(Console::log, () -> Console.error("Ops!Something is wrong!"));
* }
- * @since 9 这是jdk9{@link java.util.Optional}中的新函数
+ *
+ * @param action 包裹里的值存在时的操作
+ * @param emptyAction 包裹里的值不存在时的操作
+ * @throws NullPointerException 如果包裹里的值存在时,执行的操作为 {@code null}, 或者包裹里的值不存在时的操作为 {@code null},则抛出{@code NPE}
*/
public void ifPresentOrElse(Consumer super T> action, VoidFunc0 emptyAction) {
if (value != null) {
@@ -255,9 +263,9 @@ public class Opt{@code
* Stream
- * @since 9 这是jdk9{@link java.util.Optional}中的新函数
+ *
+ * @return 返回一个包含该元素的 {@link Stream}或空的 {@link Stream}
*/
public Stream{@code
+ * Opt.ofNullable(null).orElseThrow(IllegalStateException::new, "Ops!Something is wrong!");
+ * }
+ *
* @param {@code
- * Opt.ofNullable(null).orElseThrow(IllegalStateException::new, "Ops!Something is wrong!");
- * }
* @author VampireAchao
*/
public