在我的项目中,我们使用的外部 API 不是通用的,所以有一个类叫做 ItemList
这是 java.util.List
的实现, 它包含 Item
的列表对象。但是在我们的新代码中,我们将其表示为 List<Item>
, 我想写一个可以同时接受 ItemList
的方法和 List<Item>
,
我试过这种签名:
public static void readList(List<?> list) {}
它工作正常,但问题是有来自 Object
的转换至 Item
在此方法内部,当参数为 ItemList
时使用,并且对于 List<Item>
不是必需的, 有更好的方法吗?
最佳答案
如果ItemList
是 List
的实现, 如果你知道它包含 Item
实例,只需将其转换为 List<Item>
.您会收到类型安全警告,但它的安全性不亚于强制转换 ItemList
的每个元素。至 Item
.
关于java - 对遗留代码使用泛型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7235218/