gpt4 book ai didi

java - 返回从类型扩展的通用列表时出现编译错误

转载 作者:太空宇宙 更新时间:2023-11-04 12:34:07 25 4
gpt4 key购买 nike

我正在实现一个访问主数据存储库的通用适配器,并且应该能够返回通用主数据类型的子类型,实现的类型代表更广泛的主数据类型

public abstract class TypedMasterData implements Comparable<TypedMasterData> {
.....
}

特定类型扩展了主类型

public class CompanyName extends TypedMasterData {
...
}

我有一个适配器,可以抽象访问主数据存储库,并应返回缩小范围的类型。

public class DefaultMasterDataRespositoryAdapter implements MasterDataRespositoryAdapter {

//some code just to check for implementaion validity,
@Override
public <T extends TypedMasterData> List<T> getAllValuesOfType(T t) {
return Arrays.asList(new CompanyName[] {new CompanyName(1, "CompanyName", "ADLC", "ADLC", null)});
}

....
}

但是方法getAllValuesOfType给出了如下编译错误,

enter image description here

最佳答案

您在这里对泛型感到困惑。我认为 MasterDataRespositoryAdapter.getAllValuesOfType 的更好实现将是:

public <T extends TypedMasterData> List<TypedMasterData> getAllValuesOfType(T t) ;

虽然我们不知道参数T t是什么在这里做,所以也许你可以摆脱它。

你可以想到<T extends TypedMasterData>作为至少类型为 TypedMasterData 的具体类但在这里,你试图适应一些 CompanyName进入List “具体类”。这就像试图放入一些 Integer进入List<Double> 。两者IntegerDouble继承Number但无论如何都不会编译。解决方法是输入 IntegerDouble进入List<Number> .

泛型很难处理。尽管我有一年的 Java 经验,但有时我自己仍然在与它们作斗争。

关于java - 返回从类型扩展的通用列表时出现编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37520465/

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