From b865d8b728e60bc2aa37161bf4eb5ab9c42f37f8 Mon Sep 17 00:00:00 2001 From: Looly Date: Thu, 19 Oct 2023 11:03:41 +0800 Subject: [PATCH] add method --- .../java/org/dromara/hutool/core/lang/Opt.java | 15 +++++++++++++-- .../hutool/log/engine/LogEngineFactory.java | 10 ++++++++++ 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/lang/Opt.java b/hutool-core/src/main/java/org/dromara/hutool/core/lang/Opt.java index ec614071a..bfa1c8a99 100644 --- a/hutool-core/src/main/java/org/dromara/hutool/core/lang/Opt.java +++ b/hutool-core/src/main/java/org/dromara/hutool/core/lang/Opt.java @@ -203,7 +203,7 @@ public class Opt { * @return this * @throws NullPointerException 如果包裹里的值存在,但你传入的操作为{@code null}时抛出 */ - public Opt ifFail(final Consumer action) throws NullPointerException{ + public Opt ifFail(final Consumer action) throws NullPointerException { Objects.requireNonNull(action, "action is null"); if (isFail()) { @@ -227,7 +227,7 @@ public class Opt { * @throws NullPointerException 如果包裹里的值存在,但你传入的操作为{@code null}时抛出 */ @SafeVarargs - public final Opt ifFail(final Consumer action, final Class... exs) throws NullPointerException{ + public final Opt ifFail(final Consumer action, final Class... exs) throws NullPointerException { Objects.requireNonNull(action, "action is null"); if (isFail() && EasyStream.of(exs).anyMatch(e -> e.isAssignableFrom(throwable.getClass()))) { @@ -448,6 +448,17 @@ public class Opt { return isPresent() ? value : supplier.get(); } + /** + * 如果包裹里元素的值存在,则返回该值,否则返回传入的操作执行后的返回值 + * + * @param supplier 值不存在时需要执行的操作,返回一个类型与 包裹里元素类型 相同的元素 + * @return 如果包裹里元素的值存在,则返回该值,否则返回传入的操作执行后的返回值 + * @throws NullPointerException 如果之不存在,并且传入的操作为空,则抛出 {@code NPE} + */ + public Opt orElseOpt(final Supplier supplier) { + return or(() -> Opt.ofNullable(supplier.get())); + } + /** * 如果包裹里元素的值存在,则返回该值,否则执行传入的操作 * diff --git a/hutool-log/src/main/java/org/dromara/hutool/log/engine/LogEngineFactory.java b/hutool-log/src/main/java/org/dromara/hutool/log/engine/LogEngineFactory.java index ca2289940..aa835087d 100755 --- a/hutool-log/src/main/java/org/dromara/hutool/log/engine/LogEngineFactory.java +++ b/hutool-log/src/main/java/org/dromara/hutool/log/engine/LogEngineFactory.java @@ -86,6 +86,16 @@ public class LogEngineFactory { logEngine.createLog(LogEngineFactory.class).debug("Custom Use [{}] Logger.", logEngine.getName()); } + /** + * 创建指定日志实现引擎 + * + * @param logEngineClass 引擎类 + * @return {@link LogEngine} + */ + public static LogEngine createEngine(final Class logEngineClass) { + return ConstructorUtil.newInstance(logEngineClass); + } + /** * 决定日志实现 *