java - 使用泛型匹配参数和返回类型

标签 java generics

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

示例:

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

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

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 提供的类级别通用参数的建议.

关于java - 使用泛型匹配参数和返回类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51398505/

相关文章:

具有类和嵌套静态接口(interface)的 Java 泛型

Java Stream - 收集器内的类型推断问题

Java正则表达式分组问题

java - 我可以更改应用程序名称吗(android :label at manifest) or icon (android:icon at manifest) dynamically?

java - 从 RestulSet 表编辑 JTable

java - 如何在Java类层次结构中实现泛型类型安全的深度克隆?

java - Hibernate 的通用 get 方法

java - 简单的输入限制问题

java - ClassNotFoundException 与 Spring JavaConfigWebApplicationContext

function - 在不调用 typescript 中的函数的情况下获取泛型函数的类型