gpt4 book ai didi

java - 动态返回类型 - Java 泛型

转载 作者:行者123 更新时间:2023-12-02 06:50:58 34 4
gpt4 key购买 nike

我有两个相似的对象(实际上是实体)。从一个函数中,我得到其中一个。所以我只有在运行时才知道我得到了哪一个。

我需要对我得到的对象进行处理。两者都有相同的一组要应用的流程。所以我想为这两个类编写通用函数。我尝试编写,但我不清楚如何实现它。

 List<MyClassA> objAList;
List<MyClassB> objBList:
List<ResultA> resultObjAList;
List<ResultB> resultObjBList;

objAList = getResult();
objBList = getResult()

if ( objAList != null ) {
// Set of function calls on ObjA to process further. For ex:
resultObjAList = doProcess(objAList);

} else {
// Same set of function class to process. For Ex:
resultObjBList = doProcess(objBList);
}
经过几次尝试后,我即将决定编写两个看起来相似的不同函数来对每个类进行处理。

注意上面的doProcess函数。它接受 objAobjB 并返回 resultObjAresultObjB

我无法用一个接口(interface)来包装这两者。所以这个选项被排除了。

doProcess 看起来像这样:

  List<ResultA> doProcess( List<MyClassA> A ) {
for ( MyClassList a : A ) {
a.getSomething();
doanotherProcess(a.getxya(), a.getABC());
....
}
return AnotherListOfType_ResultA;
}

是否可以为此编写通用函数?

最佳答案

如果您想一般映射 List<MyClassA>输入ResultAList<MyClassB>输入ResultB ,那么我可以回答这是不可能的:没有办法用 Java 泛型来表达结果类型对输入类型的这种依赖性。

理论上,您可以参数化 MyClassAResultA ,如MyClassA<ResultA> ,但它可能只会让你的代码变得一团糟。

关于java - 动态返回类型 - Java 泛型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18034227/

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