可以使用泛型将返回类型与参数类型进行匹配吗?

示例案例:

我有一个抽象类,将实现该抽象类以从不同的POJO导入数据,该类包含抽象方法importData。

从importData返回的Object必须与传递给该方法的Object具有相同的类型。

public abstract POJO importData(final POJO dataObject, final String messageId);


由于每个抽象方法的实现的对象类型都不同,并且该类型不扩展另一个,因此如何定义抽象方法,以使实现的返回类型和传递的类型必须匹配?

编辑:

经过测试:

public abstract <T> T importData(final T jaxbObject, final String messageId);


结果:

方法的返回类型不必与传递的对象类型匹配。

最佳答案

您可以使用方法级别的通用参数:

public abstract <T> T importData(final T dataObject, final String messageId);


请注意,这种类型的T对于每次调用都可能有所不同。例如以下可能:

POJO myPojo = myClass.importData(otherPojo, "messageId");
Integer someInt = myClass.importData(5, "otherMessageId");
String aSring = myClass.importData("Hello World", "anotherMessageId");


如果这不是您想要的,则可以使用@Leviand提出的类级别通用参数的建议。

09-30 14:55
查看更多