Java泛型工作一次,不编译第二次

时间:2015-04-29 14:43:01

标签: java generics

这是我在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())){

}
}

}

0 个答案:

没有答案