RHS*_*ger 15 java generics collections
我正在尝试创建一个泛型类型,它保留了为以后使用而创建的自身版本的映射.实际上,它是一个单例模式,每种类型都有一个实例.我到目前为止的代码是:
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);
}
}
Run Code Online (Sandbox Code Playgroud)
但是,我仍然不确定我"做得对".感觉我应该能够指定集合是(Class - > FieldBinder).IDE警告返回语句的事实只会强化这种想法.
有没有更好的方法来处理这个?
注意:这个问题看起来非常密切相关,但是远远不够,我无法弄清楚如何将信息应用到我自己的问题中.
Ita*_*man 15
您的实施是正确的.没有"更好"的方法(如果在代码中有这样的东西"更好",这是另一个问题..)
小修正:
<V extends Object>
相当于V
哪个不那么冗长Class<? extends Object>
相当于Class<?>
哪个不那么冗长@SuppressWarnings("unchecked")
注释告诉编译器转换是安全的 归档时间: |
|
查看次数: |
15397 次 |
最近记录: |