diff --git a/hutool-core/src/main/java/cn/hutool/core/lang/Singleton.java b/hutool-core/src/main/java/cn/hutool/core/lang/Singleton.java index a4f210100..ba49e1e99 100755 --- a/hutool-core/src/main/java/cn/hutool/core/lang/Singleton.java +++ b/hutool-core/src/main/java/cn/hutool/core/lang/Singleton.java @@ -6,7 +6,11 @@ import cn.hutool.core.util.ClassUtil; import cn.hutool.core.util.ReflectUtil; import cn.hutool.core.util.StrUtil; +import java.util.Collection; +import java.util.HashSet; +import java.util.Set; import java.util.concurrent.ConcurrentHashMap; +import java.util.stream.Collectors; /** * 单例类
@@ -90,6 +94,30 @@ public final class Singleton { POOL.put(key, obj); } + /** + * 判断某个类的对象是否存在 + * + * @param clazz 类 + * @param params 构造参数 + * @return 是否存在 + */ + public static boolean exists(Class clazz, Object... params){ + if (null != clazz){ + final String key = buildKey(clazz.getName(), params); + return POOL.containsKey(key); + } + return false; + } + + /** + * 获取单例池中存在的所有类 + * + * @return 非重复的类集合 + */ + public static Set> getExistClass(){ + return POOL.values().stream().map(Object::getClass).collect(Collectors.toSet()); + } + /** * 移除指定Singleton对象 *