2
假设我们正在处理以下设置:未选中铸警告,澄清需要
A extends B
主要作用:
public void doIt() {
List<A> listOfA = new ArrayList<A>();
listOfA.add(new A());
listOfA.add(new A());
C c = new C();
// We know that really, listOfA is going to be modified
// in some way and will be returned to us, thus, it is
// ok to cast result back to what we know it to be
List<A> a = (List<A>) c.doSomethingWithListOfA(listOfA);
}
当C
有一个方法
public List<? extends B> doSomethingWithListOfA(List<? extends B>
listOfObjectsThatExtendB) {
return someFormofListA;
}
的(List)c.doSomethingWithListOfA(listOfA);返回- Type safety: Unchecked cast from List<capture#1-of ? extends B> to List<A>
警告。
我想知道是否可能是因为某些其他类也可能扩展B,从而导致编译器不确定实际上它是否是扩展B的A或可能的X的列表?
其他再压制警告,怎么检查这个? (未选中铸)
感谢吉姆!清晰明了的解释和例子 – JAM 2012-08-02 02:09:52