我正在尝试创建一个通用类型,它保留已创建供以后使用的自身版本的映射。实际上,每个类型只有一个实例是单例模式。我到目前为止的代码是:通用键/值与相关类型的通用映射
public class FieldBinder<T> {
static final Map<Class<? extends Object>,FieldBinder<? extends Object>> instanceMap =
new HashMap<Class<? extends Object>,FieldBinder<? extends Object>>();
private FieldBinder() {}
synchronized public static <V extends Object> FieldBinder<V> getInstance(Class<V> klass) {
if(!instanceMap.containsKey(klass)) {
instanceMap.put(klass, new FieldBinder<V>());
}
return (FieldBinder<V>)instanceMap.get(klass);
}
}
但是,我仍然不确定我是否“做得对”。感觉就像我应该能够指定集合是(Class - > FieldBinder)。 IDE警告返回声明只会加强这一想法。
有没有更好的方法来处理这个问题?
注意:This question似乎密切相关,但只是远远不够,我无法弄清楚如何将信息应用于我自己的问题。
假设我明白你在说什么,那么这根本就不是我正在做的。我想要告诉编译器“这是一张从'Class >'到'FieldBinder >'的地图,其中两个?必须相同。因此,当我使用χ= xyz键拔出某些东西时,我可以安全地将值赋给?= xyz,因为编译器可以限制我只以这种方式放置东西。这些都是编译时的信息,看起来好像编译器不能处理。 – RHSeeger 2010-02-05 18:26:58