我有两个相似的对象(实际上是实体)。从一个函数中,我得到其中一个。所以我只有在运行时才知道我得到了哪一个。
我需要对我得到的对象进行处理。两者都有相同的一组要应用的流程。所以我想为这两个类编写通用函数。我尝试编写,但我不清楚如何实现它。
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
函数。它接受 objA
或 objB
并返回 resultObjA
或 resultObjB
。
我无法用一个接口(interface)来包装这两者。所以这个选项被排除了。
doProcess
看起来像这样:
List<ResultA> doProcess( List<MyClassA> A ) {
for ( MyClassList a : A ) {
a.getSomething();
doanotherProcess(a.getxya(), a.getABC());
....
}
return AnotherListOfType_ResultA;
}
是否可以为此编写通用函数?
最佳答案
如果您想一般映射 List<MyClassA>
输入ResultA
和List<MyClassB>
输入ResultB
,那么我可以回答这是不可能的:没有办法用 Java 泛型来表达结果类型对输入类型的这种依赖性。
理论上,您可以参数化 MyClassA
与 ResultA
,如MyClassA<ResultA>
,但它可能只会让你的代码变得一团糟。
关于java - 动态返回类型 - Java 泛型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18034227/