java - 在 Java 中为方法实现泛型返回类型
问题描述
您好,我有几个模型返回类型和一个可以具有任何一种返回类型的休息调用。我想实现泛型或类似的东西,它可以返回预期的类型模型。例如:
考虑到我有 2 个模型 ItemDetails.java 和 ItemDetailsWithTimestamp.java 在一种情况下我需要返回第一个模型,在另一种情况下我想要第二个模型:我尝试了类似的东西:
Test.java
@Test
public void getitemTest() {
ItemApi itemApi = new ItemApi();
ItemDetails result = itemApi.getitem(ItemDetails.class);
}
public void getitemWithTimestampTest() {
ItemApi itemApi = new ItemApi();
ItemDetailsWithTimestamp result = itemApi.getitem(ItemDetailsWithTimestamp.class);
}
在ItemApi
课堂上的方法getitem
:
public static <T> ResponseEntity<T> getitem(Class<T> type) {
#somecode for implementing rest calls
return (ResponseEntity<T>) response;
}
注意:这不是所见的完整代码,而是可能足以解释问题的摘录。上面的代码在运行测试时返回错误:
java.lang.ClassCastException:类 java.util.LinkedHashMap 不能转换为类 myproject.model.ItemDetails(java.util.LinkedHashMap 位于加载器“bootstrap”的模块 java.base 中;myproject.model.ItemDetails 位于未命名的模块中加载程序“应用程序”)
可能是什么问题,是不可能使用这种方法来适应不同的类型,还是我错过了什么。提前致谢,
解决方案
处理此问题的一种方法:
interface ItemDetails{}
class ItemDetailDtoWithTimeStamp implements ItemDetails{}
class ItemDetailsWithSomething implements ItemDetails{}
返回时,您的返回类型应为ItemDetails
(interface) 和ResponseEntity<ItemDetails>
推荐阅读
- manim - 更改图形的整体比例
- javascript - Javascript承诺执行时间问题
- github - 如果文件未被触及,如何触发 Github 操作?
- c - 如何解决 DPDK 内存池创建失败?
- javascript - 如何使用javascript填充从文本框中选择的下拉列表中的值
- json - 无法将响应数据分配给状态数据并且响应在 React 中不为空
- python-3.x - 即使不在列表中,在列表中获取重复项也应该在 Python 中正常工作
- google-smart-home - 当用户选择取消链接时该怎么办
- python - Python 和 Pandas 中的年月彩条图
- sql-server - SQL Server 中不存在约束