diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/cache/impl/WeakCache.java b/hutool-core/src/main/java/org/dromara/hutool/core/cache/impl/WeakCache.java index ffcf651ea..567c6c8f3 100644 --- a/hutool-core/src/main/java/org/dromara/hutool/core/cache/impl/WeakCache.java +++ b/hutool-core/src/main/java/org/dromara/hutool/core/cache/impl/WeakCache.java @@ -52,8 +52,8 @@ public class WeakCache extends TimedCache{ final WeakConcurrentMap, CacheObj> map = (WeakConcurrentMap, CacheObj>) this.cacheMap; // WeakKey回收之后,key对应的值已经是null了,因此此处的key也为null map.setPurgeListener((key, value)-> listener.onRemove( - Opt.ofNullable(key).map(Ref::get).map(Mutable::get).get(), - Opt.ofNullable(value).map(Ref::get).map(CacheObj::getValue).get())); + Opt.ofNullable(key).map(Ref::get).map(Mutable::get).getOrNull(), + Opt.ofNullable(value).map(Ref::get).map(CacheObj::getValue).getOrNull())); return this; } diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/collection/CollStreamUtil.java b/hutool-core/src/main/java/org/dromara/hutool/core/collection/CollStreamUtil.java index 83adb3a4e..b25368216 100644 --- a/hutool-core/src/main/java/org/dromara/hutool/core/collection/CollStreamUtil.java +++ b/hutool-core/src/main/java/org/dromara/hutool/core/collection/CollStreamUtil.java @@ -68,7 +68,7 @@ public class CollStreamUtil { if (CollUtil.isEmpty(collection)) { return MapUtil.zero(); } - return toMap(collection, (v) -> Opt.ofNullable(v).map(key).get(), Function.identity(), isParallel); + return toMap(collection, (v) -> Opt.ofNullable(v).map(key).getOrNull(), Function.identity(), isParallel); } /** diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/convert/CompositeConverter.java b/hutool-core/src/main/java/org/dromara/hutool/core/convert/CompositeConverter.java index 07401cc03..9cf6dcda4 100644 --- a/hutool-core/src/main/java/org/dromara/hutool/core/convert/CompositeConverter.java +++ b/hutool-core/src/main/java/org/dromara/hutool/core/convert/CompositeConverter.java @@ -127,7 +127,7 @@ public class CompositeConverter extends RegisterConverter { // issue#I7WJHH,Opt和Optional处理 if (value instanceof Opt) { - value = ((Opt) value).get(); + value = ((Opt) value).getOrNull(); if (ObjUtil.isNull(value)) { return defaultValue; } 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 dc9c1dcb1..da072f025 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 @@ -151,16 +151,15 @@ public class Opt { /** * 返回包裹里的元素,取不到则为{@code null},注意!!!此处和{@link java.util.Optional#get()}不同的一点是本方法并不会抛出{@code NoSuchElementException} - * 如果元素为空,则返回{@code null},如果需要一个绝对不能为{@code null}的值,则使用{@link #orElseThrow()} * *

- * 如果需要一个绝对不能为 {@code null}的值,则使用{@link #orElseThrow()} + * 如果元素为空,则返回{@code null},如果需要一个绝对不能为 {@code null}的值,则使用{@link #orElseThrow()} * 做此处修改的原因是,有时候我们确实需要返回一个null给前端,并且这样的时候并不少见 * 而使用 {@code .orElse(null)}需要写整整12个字符,用{@code .get()}就只需要6个啦 * * @return 包裹里的元素,有可能为{@code null} */ - public T get() { + public T getOrNull() { return this.value; } @@ -362,7 +361,8 @@ public class Opt { */ @SafeVarargs public final Opt ifPresents(final SerConsumer... actions) throws NullPointerException { - return ifPresent(Stream.of(actions).reduce(SerConsumer::andThen).orElseGet(() -> o -> {})); + return ifPresent(Stream.of(actions).reduce(SerConsumer::andThen).orElseGet(() -> o -> { + })); } /** diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/map/ForestMap.java b/hutool-core/src/main/java/org/dromara/hutool/core/map/ForestMap.java index 0949d8f66..5406419a1 100644 --- a/hutool-core/src/main/java/org/dromara/hutool/core/map/ForestMap.java +++ b/hutool-core/src/main/java/org/dromara/hutool/core/map/ForestMap.java @@ -279,7 +279,7 @@ public interface ForestMap extends Map> { default V getNodeValue(final K key) { return Opt.ofNullable(get(key)) .map(TreeEntry::getValue) - .get(); + .getOrNull(); } // ===================== 子节点相关方法 ===================== diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/map/multi/Table.java b/hutool-core/src/main/java/org/dromara/hutool/core/map/multi/Table.java index e8f758d9b..cb496d6f9 100644 --- a/hutool-core/src/main/java/org/dromara/hutool/core/map/multi/Table.java +++ b/hutool-core/src/main/java/org/dromara/hutool/core/map/multi/Table.java @@ -60,7 +60,7 @@ public interface Table extends Iterable> { * @return 行是否存在 */ default boolean containsRow(final R rowKey) { - return Opt.ofNullable(rowMap()).map((map) -> map.containsKey(rowKey)).get(); + return Opt.ofNullable(rowMap()).map((map) -> map.containsKey(rowKey)).getOrNull(); } /** @@ -70,7 +70,7 @@ public interface Table extends Iterable> { * @return 行映射,返回的键为列键,值为表格的值 */ default Map getRow(final R rowKey) { - return Opt.ofNullable(rowMap()).map((map) -> map.get(rowKey)).get(); + return Opt.ofNullable(rowMap()).map((map) -> map.get(rowKey)).getOrNull(); } /** @@ -79,7 +79,7 @@ public interface Table extends Iterable> { * @return 行键 */ default Set rowKeySet() { - return Opt.ofNullable(rowMap()).map(Map::keySet).get(); + return Opt.ofNullable(rowMap()).map(Map::keySet).getOrNull(); } /** @@ -99,7 +99,7 @@ public interface Table extends Iterable> { * @return 列是否存在 */ default boolean containsColumn(final C columnKey) { - return Opt.ofNullable(columnMap()).map((map) -> map.containsKey(columnKey)).get(); + return Opt.ofNullable(columnMap()).map((map) -> map.containsKey(columnKey)).getOrNull(); } /** @@ -109,7 +109,7 @@ public interface Table extends Iterable> { * @return 列映射,返回的键为行键,值为表格的值 */ default Map getColumn(final C columnKey) { - return Opt.ofNullable(columnMap()).map((map) -> map.get(columnKey)).get(); + return Opt.ofNullable(columnMap()).map((map) -> map.get(columnKey)).getOrNull(); } /** @@ -118,7 +118,7 @@ public interface Table extends Iterable> { * @return 列set */ default Set columnKeySet() { - return Opt.ofNullable(columnMap()).map(Map::keySet).get(); + return Opt.ofNullable(columnMap()).map(Map::keySet).getOrNull(); } /** @@ -157,7 +157,7 @@ public interface Table extends Iterable> { * @return 值 */ default boolean containsValue(final V value){ - final Collection> rows = Opt.ofNullable(rowMap()).map(Map::values).get(); + final Collection> rows = Opt.ofNullable(rowMap()).map(Map::values).getOrNull(); if(null != rows){ for (final Map row : rows) { if (row.containsValue(value)) { @@ -176,7 +176,7 @@ public interface Table extends Iterable> { * @return 值,如果值不存在,返回{@code null} */ default V get(final R rowKey, final C columnKey) { - return Opt.ofNullable(getRow(rowKey)).map((map) -> map.get(columnKey)).get(); + return Opt.ofNullable(getRow(rowKey)).map((map) -> map.get(columnKey)).getOrNull(); } /** diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/reflect/kotlin/KClassUtil.java b/hutool-core/src/main/java/org/dromara/hutool/core/reflect/kotlin/KClassUtil.java index d7639b23b..070ea34ae 100644 --- a/hutool-core/src/main/java/org/dromara/hutool/core/reflect/kotlin/KClassUtil.java +++ b/hutool-core/src/main/java/org/dromara/hutool/core/reflect/kotlin/KClassUtil.java @@ -33,7 +33,7 @@ public class KClassUtil { @SuppressWarnings("unchecked") private static final Class META_DATA_CLASS = - (Class) Opt.ofTry(() -> Class.forName("kotlin.Metadata")).get(); + (Class) Opt.ofTry(() -> Class.forName("kotlin.Metadata")).getOrNull(); /** * 是否提供或处于Kotlin环境中 diff --git a/hutool-core/src/test/java/org/dromara/hutool/core/lang/OptTest.java b/hutool-core/src/test/java/org/dromara/hutool/core/lang/OptTest.java index a64014017..9424a5aa9 100644 --- a/hutool-core/src/test/java/org/dromara/hutool/core/lang/OptTest.java +++ b/hutool-core/src/test/java/org/dromara/hutool/core/lang/OptTest.java @@ -53,10 +53,10 @@ public class OptTest { } @Test - public void getTest() { + public void getOrNullTest() { // 和原版Optional有区别的是,get不会抛出NoSuchElementException // 如果想使用原版Optional中的get这样,获取一个一定不为空的值,则应该使用orElseThrow - final Object opt = Opt.ofNullable(null).get(); + final Object opt = Opt.ofNullable(null).getOrNull(); Assertions.assertNull(opt); } @@ -77,7 +77,7 @@ public class OptTest { Assertions.assertEquals("hutool", user.getUsername()); // 注意,传入的lambda中,对包裹内的元素执行赋值操作并不会影响到原来的元素 - final String name = Opt.ofNullable("hutool").ifPresent(username -> username = "123").ifPresent(username -> username = "456").get(); + final String name = Opt.ofNullable("hutool").ifPresent(username -> username = "123").ifPresent(username -> username = "456").getOrNull(); Assertions.assertEquals("hutool", name); } @@ -99,7 +99,7 @@ public class OptTest { // 这也是为什么我们需要getter和setter而不直接给bean中的属性赋值中的其中一个原因 final String name = Opt.ofNullable("hutool").ifPresents( username -> username = "123", username -> username = "456", - n -> Assertions.assertEquals("hutool", n)).get(); + n -> Assertions.assertEquals("hutool", n)).getOrNull(); Assertions.assertEquals("hutool", name); // 当然,以下情况不会抛出NPE,但也没什么意义 @@ -119,7 +119,7 @@ public class OptTest { final User user = User.builder().username("hutool").build(); final Opt userOpt = Opt.of(user); // 获取昵称,获取不到则获取用户名 - final String name = userOpt.map(User::getNickname).or(() -> userOpt.map(User::getUsername)).get(); + final String name = userOpt.map(User::getNickname).or(() -> userOpt.map(User::getUsername)).getOrNull(); Assertions.assertEquals("hutool", name); } diff --git a/hutool-core/src/test/java/org/dromara/hutool/core/lang/mutable/BaseMutableTest.java b/hutool-core/src/test/java/org/dromara/hutool/core/lang/mutable/BaseMutableTest.java index f20b606b8..8e019bd2f 100644 --- a/hutool-core/src/test/java/org/dromara/hutool/core/lang/mutable/BaseMutableTest.java +++ b/hutool-core/src/test/java/org/dromara/hutool/core/lang/mutable/BaseMutableTest.java @@ -84,7 +84,7 @@ abstract class BaseMutableTest> { @Test void testToOpt() { final Mutable mutableObj = getMutable(getValue1()); - final V value = mutableObj.toOpt().get(); + final V value = mutableObj.toOpt().getOrNull(); Assertions.assertEquals(getValue1(), value); } diff --git a/hutool-core/src/test/java/org/dromara/hutool/core/stream/EasyStreamTest.java b/hutool-core/src/test/java/org/dromara/hutool/core/stream/EasyStreamTest.java index 8772b6880..254fc114a 100644 --- a/hutool-core/src/test/java/org/dromara/hutool/core/stream/EasyStreamTest.java +++ b/hutool-core/src/test/java/org/dromara/hutool/core/stream/EasyStreamTest.java @@ -548,19 +548,19 @@ public class EasyStreamTest { final Opt bigDecimalAvgFullParam = EasyStream.of(1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, 10.10) .map(NumberUtil::toBigDecimal) .avg(Function.identity(), 2, RoundingMode.HALF_UP); - Assertions.assertEquals(NumberUtil.toBigDecimal(5.96), bigDecimalAvgFullParam.get()); + Assertions.assertEquals(NumberUtil.toBigDecimal(5.96), bigDecimalAvgFullParam.getOrNull()); //测试bigDecimal的avg单参 final Opt bigDecimalAvgOneParam = EasyStream.of(1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, 10.10) .map(NumberUtil::toBigDecimal) .avg(Function.identity()); - Assertions.assertEquals(NumberUtil.toBigDecimal(5.96), bigDecimalAvgOneParam.get()); + Assertions.assertEquals(NumberUtil.toBigDecimal(5.96), bigDecimalAvgOneParam.getOrNull()); //测试bigDecimal的avg双参 final Opt bigDecimalAvgTwoParam = EasyStream.of(1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, 10.10) .map(NumberUtil::toBigDecimal) .avg(Function.identity(), 2); - Assertions.assertEquals(NumberUtil.toBigDecimal(5.96), bigDecimalAvgTwoParam.get()); + Assertions.assertEquals(NumberUtil.toBigDecimal(5.96), bigDecimalAvgTwoParam.getOrNull()); //测试bigDecimal的avg 空元素 final Opt emptyBigDecimalAvg = EasyStream.of(bigDecimalEmptyList) @@ -585,7 +585,7 @@ public class EasyStreamTest { final BigDecimal sum = EasyStream.of(testList).sum(BigDecimalTest::getCount); Assertions.assertEquals(15, sum.intValue()); - final BigDecimal avg = EasyStream.of(testList).avg(BigDecimalTest::getCount).get(); + final BigDecimal avg = EasyStream.of(testList).avg(BigDecimalTest::getCount).getOrNull(); Assertions.assertEquals(3, avg.intValue()); } diff --git a/hutool-crypto/src/main/java/org/dromara/hutool/crypto/symmetric/SymmetricCrypto.java b/hutool-crypto/src/main/java/org/dromara/hutool/crypto/symmetric/SymmetricCrypto.java index dadd839da..e3845f9cc 100644 --- a/hutool-crypto/src/main/java/org/dromara/hutool/crypto/symmetric/SymmetricCrypto.java +++ b/hutool-crypto/src/main/java/org/dromara/hutool/crypto/symmetric/SymmetricCrypto.java @@ -450,7 +450,7 @@ public class SymmetricCrypto implements SymmetricEncryptor, SymmetricDecryptor, private SymmetricCrypto initParams(final String algorithm, AlgorithmParameterSpec paramsSpec) { if (null == paramsSpec) { byte[] iv = Opt.ofNullable(cipher) - .map(JceCipher::getRaw).map(Cipher::getIV).get(); + .map(JceCipher::getRaw).map(Cipher::getIV).getOrNull(); // 随机IV if (StrUtil.startWithIgnoreCase(algorithm, "PBE")) { diff --git a/hutool-db/src/main/java/org/dromara/hutool/db/sql/StatementUtil.java b/hutool-db/src/main/java/org/dromara/hutool/db/sql/StatementUtil.java index 3282f04a9..24debe767 100644 --- a/hutool-db/src/main/java/org/dromara/hutool/db/sql/StatementUtil.java +++ b/hutool-db/src/main/java/org/dromara/hutool/db/sql/StatementUtil.java @@ -54,7 +54,7 @@ public class StatementUtil { return StatementBuilder.of() .setConnection(conn) .setReturnGeneratedKey(returnGeneratedKey) - .setSqlFilter(Opt.ofNullable(config).map(DbConfig::getSqlFilters).get()) + .setSqlFilter(Opt.ofNullable(config).map(DbConfig::getSqlFilters).getOrNull()) .setSql(sql) .setParams(params) .build(); @@ -89,7 +89,7 @@ public class StatementUtil { return StatementBuilder.of() .setConnection(conn) .setReturnGeneratedKey(false) - .setSqlFilter(Opt.ofNullable(config).map(DbConfig::getSqlFilters).get()) + .setSqlFilter(Opt.ofNullable(config).map(DbConfig::getSqlFilters).getOrNull()) .setSql(sql) .setParamList(StreamUtil.of(paramsBatch).collect(Collectors.toList())) .buildForBatch(); @@ -109,7 +109,7 @@ public class StatementUtil { public static CallableStatement prepareCall(final DbConfig config, final Connection conn, final String sql, final Object... params) throws SQLException { return StatementBuilder.of() .setConnection(conn) - .setSqlFilter(Opt.ofNullable(config).map(DbConfig::getSqlFilters).get()) + .setSqlFilter(Opt.ofNullable(config).map(DbConfig::getSqlFilters).getOrNull()) .setSql(sql) .setParams(params) .buildForCall(); diff --git a/hutool-json/src/main/java/org/dromara/hutool/json/convert/JSONConverter.java b/hutool-json/src/main/java/org/dromara/hutool/json/convert/JSONConverter.java index 5e60b2c37..d018a3eb7 100644 --- a/hutool-json/src/main/java/org/dromara/hutool/json/convert/JSONConverter.java +++ b/hutool-json/src/main/java/org/dromara/hutool/json/convert/JSONConverter.java @@ -145,7 +145,7 @@ public class JSONConverter implements Converter, Serializable { if (obj instanceof Optional) { obj = ((Optional) obj).orElse(null); } else if (obj instanceof Opt) { - obj = ((Opt) obj).get(); + obj = ((Opt) obj).getOrNull(); } final JSON json;