Dis*_*ame 4 java generics casting
我是仿制药的新手.
有一个Map
喜欢
private static Map<String, Object> map;
Run Code Online (Sandbox Code Playgroud)
和像这样的方法
public <T> T getObject(final Class<T> myClass) {
return (T)map.get(myClass);
}
Run Code Online (Sandbox Code Playgroud)
如何更改地图声明,以便在从方法返回时不必进行强制转换?
您需要创建泛型类,而不是通用方法:
public class MyClass<T> {
private Map<String, T> map;
public T getObject(final String key) {
return map.get(key);
}
}
Run Code Online (Sandbox Code Playgroud)
另外,我将参数从Class更改为String.如果map.get()需要一个String,那么传递一个Class是没有意义的.
编辑:我没注意到地图是静态的.如果您可以将其更改为非静态而不破坏程序的其他部分,则可以使用.如果你不能,那你就无法避免演员阵容.
归档时间: |
|
查看次数: |
19585 次 |
最近记录: |