假设我们有以下示例代码。
头等舱:
public class Template<T> {
private final T val;
public Template(T val) {
this.val = val;
}
public T getVal() {
return val;
}
}
第二课:
import java.util.ArrayList;
import java.util.List;
public class App {
public static void main(String[] args) {
List<?> templates = new ArrayList<Template<?>>();
// How can I cast this without warning?
List<Template<?>> castedTemplates = (List<Template<?>>)templates;
// further code...
}
}
所以,我的问题是:如何在没有警告且没有 @SuppressWarnings(“未选中”)的情况下进行演员表?
答案 0 :(得分:2)
为什么你可以将它定义为List<Template<?>> templates = new ArrayList<Template<?>>();
?
答案 1 :(得分:1)
你不能这样做。
这就是重点 - 编译器必须生成这些警告,以便他们警告你,你正在做的事情并不完全适用于本书。
@SuppressWarnings("unchecked")
应该压制它们(如果那是你明确想要的)。
我知道这听起来太琐碎了,但这是真的。