在Java中是否可以将泛型类的类型强制转换为给定的Class对象?像这样:
public ModelBin<?> getModelBin(Class type) {
return (ModelBin<type>) entities.get(type);
}
编译器告诉我无法将类型解析为类型。我知道我可以做到
public ModelBin<?> getModelBin(Class type) {
return entities.get(type);
}
它会起作用,但随后我将在程序中稍后将每个模型从模型容器中删除-这是更多的工作。
我做了一些阅读,最后得到了这个:
public <T> ModelBin<T> getModelBin(Class<T> type) {
return (ModelBin<T>) entities.get(type);
}
该功能是否会返回
ModelBin<type>
对象? 最佳答案
public <T> ModelBin<T> getModelBin(Class<T> type) {
return (ModelBin<T>) entities.get(type);
}
这是以类型安全的方式执行此操作的普遍接受的方法。
final ModelBin<String> myStrBin = getModelBin(String.class);
将正确编译。
这个函数会返回一个ModelBin对象吗?
对编译器来说,这看起来是正确的,是的。在运行时,返回的
ModelBin
没有类型(由于擦除),但这只是Java设计的方式。