From 140e1d546fb6adeaa534d7d115513408fb19b194 Mon Sep 17 00:00:00 2001 From: Looly Date: Wed, 4 May 2022 23:54:57 +0800 Subject: [PATCH] add method --- .../java/cn/hutool/core/reflect/ReflectUtil.java | 14 ++++++++++++++ .../java/cn/hutool/core/util/ReflectUtilTest.java | 2 +- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/hutool-core/src/main/java/cn/hutool/core/reflect/ReflectUtil.java b/hutool-core/src/main/java/cn/hutool/core/reflect/ReflectUtil.java index cffa3e33e..0dcd178b5 100644 --- a/hutool-core/src/main/java/cn/hutool/core/reflect/ReflectUtil.java +++ b/hutool-core/src/main/java/cn/hutool/core/reflect/ReflectUtil.java @@ -150,6 +150,20 @@ public class ReflectUtil { return ArrayUtil.firstMatch((field) -> name.equals(getFieldName(field)), fields); } + /** + * 获取本类定义的指定名称的字段,包括私有字段,但是不包括父类字段 + * @param beanClass Bean的Class + * @param name 字段名称 + * @return 字段对象,如果未找到返回{@code null} + */ + public static Field getDeClearField(final Class beanClass, final String name){ + try { + return beanClass.getDeclaredField(name); + } catch (NoSuchFieldException e) { + return null; + } + } + /** * 获取指定类中字段名和字段对应的有序Map,包括其父类中的字段
* 如果子类与父类中存在同名字段,则这两个字段同时存在,子类字段在前,父类字段在后。 diff --git a/hutool-core/src/test/java/cn/hutool/core/util/ReflectUtilTest.java b/hutool-core/src/test/java/cn/hutool/core/util/ReflectUtilTest.java index f461d2941..269f9fea6 100755 --- a/hutool-core/src/test/java/cn/hutool/core/util/ReflectUtilTest.java +++ b/hutool-core/src/test/java/cn/hutool/core/util/ReflectUtilTest.java @@ -308,7 +308,7 @@ public class ReflectUtilTest { Assert.assertNull(noField); // 获取不到父类字段 - final Field field = ReflectUtil.getField(TestSubClass.class, "field"); + final Field field = ReflectUtil.getDeClearField(TestSubClass.class, "field"); Assert.assertNull(field); final Field subField = ReflectUtil.getField(TestSubClass.class, "subField");