我正在嘗試創建一個通用類型,它保留已創建供以後使用的自身版本的映射。實際上,每個類型只有一個實例是單例模式。我到目前爲止的代碼是:通用鍵/值與相關類型的通用映射
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