【发布时间】:2014-05-09 02:09:56
【问题描述】:
我正在尝试写一个奇怪的方法:
Map<Class, AbstractTool> ToolMap = new HashMap<Class, AbstractTool>();
//init'd correctly
@SuppressWarnings("unchecked")
public <T extends AbstractTool> T getTool(Class cls){
if (ToolMap.containsKey(cls)) {
return (T) ToolMap.get(cls);
}
else return null;
}
在一个奇怪的事件中,这段代码实际上做了我需要它做的事情。我的主要问题是,为了调用它,我必须打这些大电话:
this.getTool<ToolType>(ToolType.class);
不酷。
有没有办法编写这个方法,使其具有以下签名?:
ToolType t = this.getTool<ToolType>();
或者这个
ToolType t = this.getTool(ToolType); // This one seems impossible without casting.
【问题讨论】:
标签: java class generics abstract