diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/reflect/FieldUtil.java b/hutool-core/src/main/java/org/dromara/hutool/core/reflect/FieldUtil.java index e31c11e19..eca7f2c3d 100644 --- a/hutool-core/src/main/java/org/dromara/hutool/core/reflect/FieldUtil.java +++ b/hutool-core/src/main/java/org/dromara/hutool/core/reflect/FieldUtil.java @@ -105,7 +105,7 @@ public class FieldUtil { * @param name 字段名称 * @return 字段对象,如果未找到返回{@code null} */ - public static Field getDeClearField(final Class beanClass, final String name) { + public static Field getDeclearField(final Class beanClass, final String name) { try { return beanClass.getDeclaredField(name); } catch (final NoSuchFieldException e) { diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/reflect/method/MethodHandleUtil.java b/hutool-core/src/main/java/org/dromara/hutool/core/reflect/method/MethodHandleUtil.java index 8afc77ec5..fa3510eb1 100644 --- a/hutool-core/src/main/java/org/dromara/hutool/core/reflect/method/MethodHandleUtil.java +++ b/hutool-core/src/main/java/org/dromara/hutool/core/reflect/method/MethodHandleUtil.java @@ -40,7 +40,7 @@ import java.lang.reflect.Method; public class MethodHandleUtil { /** - * 执行方法句柄,{@link MethodHandle#invoke(Object...)}包装
+ * 执行方法句柄,{@link MethodHandle#invokeWithArguments(Object...)}包装
* * @param methodHandle {@link MethodHandle} * @param args 方法参数值,支持子类转换和自动拆装箱 diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/util/JdkUtil.java b/hutool-core/src/main/java/org/dromara/hutool/core/util/JdkUtil.java index 0f59f73ea..6877ecb4a 100644 --- a/hutool-core/src/main/java/org/dromara/hutool/core/util/JdkUtil.java +++ b/hutool-core/src/main/java/org/dromara/hutool/core/util/JdkUtil.java @@ -39,6 +39,10 @@ public class JdkUtil { * 是否Android环境 */ public static final boolean IS_ANDROID; + /** + * 是否OPENJ9环境 + */ + public static final boolean IS_OPENJ9; static { // JVM版本 @@ -49,6 +53,7 @@ public class JdkUtil { // JVM名称 final String jvmName = _getJvmName(); IS_ANDROID = jvmName.equals("Dalvik"); + IS_OPENJ9 = jvmName.contains("OpenJ9"); } /** diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/util/UnsafeUtil.java b/hutool-core/src/main/java/org/dromara/hutool/core/util/UnsafeUtil.java deleted file mode 100644 index 555a2a4f5..000000000 --- a/hutool-core/src/main/java/org/dromara/hutool/core/util/UnsafeUtil.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright (c) 2024. looly(loolly@aliyun.com) - * Hutool is licensed under Mulan PSL v2. - * You can use this software according to the terms and conditions of the Mulan PSL v2. - * You may obtain a copy of Mulan PSL v2 at: - * https://license.coscl.org.cn/MulanPSL2 - * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, - * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, - * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. - * See the Mulan PSL v2 for more details. - */ - -package org.dromara.hutool.core.util; - -import org.dromara.hutool.core.reflect.FieldUtil; -import sun.misc.Unsafe; - -import java.lang.reflect.Field; - -/** - * {@link Unsafe}对象获取工具
- * 参考:fastjson2/util/JDKUtils.java
- * 此工具类通过反射获取,绕开安全检查。 - * - * @author Looly - * @since 6.0.0 - */ -public class UnsafeUtil { - private static final Unsafe UNSAFE; - - static { - final String fieldName = JdkUtil.IS_ANDROID ? "THE_ONE" : "theUnsafe"; - final Field theUnsafeField = FieldUtil.getField(Unsafe.class, fieldName); - UNSAFE = (Unsafe) FieldUtil.getStaticFieldValue(theUnsafeField); - } - - /** - * 获取{@link Unsafe}对象 - * - * @return {@link Unsafe} - */ - public static Unsafe getUnsafe() { - return UNSAFE; - } -} diff --git a/hutool-core/src/test/java/org/dromara/hutool/core/reflect/FieldUtilTest.java b/hutool-core/src/test/java/org/dromara/hutool/core/reflect/FieldUtilTest.java index 8b37f0461..ba9cf70c3 100644 --- a/hutool-core/src/test/java/org/dromara/hutool/core/reflect/FieldUtilTest.java +++ b/hutool-core/src/test/java/org/dromara/hutool/core/reflect/FieldUtilTest.java @@ -46,7 +46,7 @@ public class FieldUtilTest { Assertions.assertNull(noField); // 获取不到父类字段 - final Field field = FieldUtil.getDeClearField(ReflectUtilTest.TestSubClass.class, "field"); + final Field field = FieldUtil.getDeclearField(ReflectUtilTest.TestSubClass.class, "field"); Assertions.assertNull(field); final Field subField = FieldUtil.getField(ReflectUtilTest.TestSubClass.class, "subField");