【发布时间】:2012-11-07 05:20:15
【问题描述】:
(也许是"How to create a generic singleton class in java?"的补充问题:)
class MyClass<T> {
private static Map<Class<MyClass<?>>, MyClass<?>> s_instances =
new HashMap<Class<MyClass<?>>, MyClass<?>>();
public static MyClass<?> blah(Class<MyClass<?>> clz)
throws InstantiationException, IllegalAccessException {
if (s_instances.get(clz) != null)
return s_instances.get(clz);
MyClass<?> instance = clz.newInstance();
s_instances.put(clz, instance);
return instance;
}
}
有没有更好的习惯用法来表示每个类型参数值都只有一个单例?
编辑:请不要仅仅为了指出缺乏线程安全而回答。取点。我在问我是否可以做一些比这张地图更优雅的事情。
【问题讨论】:
-
在您的示例中,不太确定每种类型都有单独的实例有什么意义。新实例的类型必须与
MyClass完全相同(不是子类),因此您可以调用 MyClass 的构造函数(无需反射)。
标签: java generics static singleton idioms