gpt4 book ai didi

java - 泛型需要类型转换

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:48:23 24 4
gpt4 key购买 nike

我有课:

class ColumnBuilder < C extends ICompositeColumn > implements IColumnBuilder < C , 
List < ColumnNameComponent > > {

@Override
public C getColumn(List<ColumnNameComponent> columnNameComponents) {
Collections.sort(columnNameComponents);
C compositeColumn = (C)new CompositeColumnImpl();

for (ColumnNameComponent component : columnNameComponents){
compositeColumn.add(component.getOrdinal(),component.getValue());
}
return compositeColumn;
}

类 CompositeColumnImpl 实现 ICompositeColumn 接口(interface)那么为什么编译器需要在这一行中进行转换:

C compositeColumn = (C)new CompositeColumnImpl();

谢谢。

最佳答案

因为您声明了 C extends ICompositeColumn。这意味着扩展 ICompositeColumn 的每个类型都可以绑定(bind)到 C,而您的类型 CompositeColumnImpl 只是其中之一。

想想这个子类

public class SubColumnBuilder extends ColumnBuilder<AnotherCompositeColumnImpl> {
}

public class AnotherCompositeColumnImpl implements ICompositeColumn{
}

关于java - 泛型需要类型转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20142818/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com