这是我在AbstractNode类中收集的访问器方法:
public List<PolygonalChain> getOutEdges() {
return Collections.unmodifiableList(outEdges);
}
但是以下不起作用,编译错误信息是:不兼容的类型:java.lang.Object无法转换为..... FormulaElements.PolygonalChain
AbstractNode aNodeExample = getConnectingShape();
for(PolygonalChain outEdge: aNodeExample.getOutEdges()){
//DO stuff
}
对我来说更令人困惑的是,我可以在AbstractNode的后代中使用以下代码而不会出现任何错误:
for(PolygonalChain outEdge: getOutEdges()){
outEdge.delete();
}
这是导致问题的最小代码:
package brokengenerics;
import java.math.BigInteger;
import java.util.List;
public class BrokenGenerics {
public static abstract class AClass <E extends Number> {
private List<B> bs;
public List<B> getBs(){
return bs;
}
}
public static class B extends AClass<BigInteger>{
}
public static AClass getSomething(){
return new B();
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
for(B desc : getSomething().getBs())){
}
}
}