From e168de86220a769a5d765e8a4e8fa74059a815da Mon Sep 17 00:00:00 2001 From: Looly Date: Sat, 9 Nov 2019 13:32:59 +0800 Subject: [PATCH] change getPropery return to T --- CHANGELOG.md | 1 + .../java/cn/hutool/core/bean/BeanUtil.java | 29 +++++++------------ 2 files changed, 12 insertions(+), 18 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 530e12422..7ce3cdf4b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ * 【core】 Convert.toList支持[1,2]字符串(issue#I149XN@Gitee) * 【core】 修正DateUtil.thisWeekOfMonth注释错误(issue#614@Github) * 【core】 DateUtil增加toLocalDate等方法,DateTime更好的支持时区 +* 【core】 BeanUtil.getProperty返回泛型对象(issue#I14PIW@Gitee) ### Bug修复 * 【db】 修复MetaUtil.getTableMeta()方法未释放ResultSet的bug(issue#I148GH@Gitee) diff --git a/hutool-core/src/main/java/cn/hutool/core/bean/BeanUtil.java b/hutool-core/src/main/java/cn/hutool/core/bean/BeanUtil.java index a2fd9fb36..65e36053c 100644 --- a/hutool-core/src/main/java/cn/hutool/core/bean/BeanUtil.java +++ b/hutool-core/src/main/java/cn/hutool/core/bean/BeanUtil.java @@ -175,12 +175,9 @@ public class BeanUtil { } catch (IntrospectionException e) { throw new BeanException(e); } - return ArrayUtil.filter(beanInfo.getPropertyDescriptors(), new Filter() { - @Override - public boolean accept(PropertyDescriptor t) { - // 过滤掉getClass方法 - return false == "class".equals(t.getName()); - } + return ArrayUtil.filter(beanInfo.getPropertyDescriptors(), (Filter) t -> { + // 过滤掉getClass方法 + return false == "class".equals(t.getName()); }); } @@ -211,8 +208,8 @@ public class BeanUtil { */ private static Map internalGetPropertyDescriptorMap(Class clazz, boolean ignoreCase) throws BeanException { final PropertyDescriptor[] propertyDescriptors = getPropertyDescriptors(clazz); - final Map map = ignoreCase ? new CaseInsensitiveMap(propertyDescriptors.length, 1) - : new HashMap((int) (propertyDescriptors.length), 1); + final Map map = ignoreCase ? new CaseInsensitiveMap<>(propertyDescriptors.length, 1) + : new HashMap<>((int) (propertyDescriptors.length), 1); for (PropertyDescriptor propertyDescriptor : propertyDescriptors) { map.put(propertyDescriptor.getName(), propertyDescriptor); @@ -295,14 +292,16 @@ public class BeanUtil { /** * 解析Bean中的属性值 * + * @param 属性值类型 * @param bean Bean对象,支持Map、List、Collection、Array * @param expression 表达式,例如:person.friend[5].name * @return Bean属性值 * @see BeanPath#get(Object) * @since 3.0.7 */ - public static Object getProperty(Object bean, String expression) { - return BeanPath.create(expression).get(bean); + @SuppressWarnings("unchecked") + public static T getProperty(Object bean, String expression) { + return (T) BeanPath.create(expression).get(bean); } /** @@ -504,7 +503,7 @@ public class BeanUtil { * @return Map */ public static Map beanToMap(Object bean, boolean isToUnderlineCase, boolean ignoreNullValue) { - return beanToMap(bean, new LinkedHashMap(), isToUnderlineCase, ignoreNullValue); + return beanToMap(bean, new LinkedHashMap<>(), isToUnderlineCase, ignoreNullValue); } /** @@ -522,13 +521,7 @@ public class BeanUtil { return null; } - return beanToMap(bean, targetMap, ignoreNullValue, new Editor() { - - @Override - public String edit(String key) { - return isToUnderlineCase ? StrUtil.toUnderlineCase(key) : key; - } - }); + return beanToMap(bean, targetMap, ignoreNullValue, key -> isToUnderlineCase ? StrUtil.toUnderlineCase(key) : key); } /**