diff --git a/hutool-core/src/main/java/cn/hutool/core/bean/BeanInfoCache.java b/hutool-core/src/main/java/cn/hutool/core/bean/BeanInfoCache.java
index 95d9bb324..1de2c566e 100644
--- a/hutool-core/src/main/java/cn/hutool/core/bean/BeanInfoCache.java
+++ b/hutool-core/src/main/java/cn/hutool/core/bean/BeanInfoCache.java
@@ -1,39 +1,69 @@
package cn.hutool.core.bean;
+import cn.hutool.core.lang.SimpleCache;
+import cn.hutool.core.lang.func.Func0;
+
import java.beans.PropertyDescriptor;
import java.util.Map;
-import cn.hutool.core.lang.SimpleCache;
-
/**
* Bean属性缓存
* 缓存用于防止多次反射造成的性能问题
- * @author Looly
*
+ * @author Looly
*/
public enum BeanInfoCache {
INSTANCE;
-
+
private final SimpleCache, Map> pdCache = new SimpleCache<>();
private final SimpleCache, Map> ignoreCasePdCache = new SimpleCache<>();
-
+
/**
* 获得属性名和{@link PropertyDescriptor}Map映射
- * @param beanClass Bean的类
+ *
+ * @param beanClass Bean的类
* @param ignoreCase 是否忽略大小写
* @return 属性名和{@link PropertyDescriptor}Map映射
*/
- public Map getPropertyDescriptorMap(Class> beanClass, boolean ignoreCase){
- return (ignoreCase ? ignoreCasePdCache : pdCache).get(beanClass);
+ public Map getPropertyDescriptorMap(Class> beanClass, boolean ignoreCase) {
+ return getCache(ignoreCase).get(beanClass);
}
-
+
+ /**
+ * 获得属性名和{@link PropertyDescriptor}Map映射
+ *
+ * @param beanClass Bean的类
+ * @param ignoreCase 是否忽略大小写
+ * @param supplier 缓存对象产生函数
+ * @return 属性名和{@link PropertyDescriptor}Map映射
+ * @since 5.4.1
+ */
+ public Map getPropertyDescriptorMap(
+ Class> beanClass,
+ boolean ignoreCase,
+ Func0