我正在使用开源代码,其中一个 API 返回 List<String>
而List
是 interface
。我知道他们这样设计是为了让 API 更加通用,但是我该如何使用它呢?我只想得到结果。如果我尝试这样的事情:
ArrayList<String> list = (ArrayList<String>) ...
我得到一个ArrayList cannot be cast to java.util.ArrayList
错误。
最佳答案
为什么不使用界面?
List list = (..your method call..)
如果 API 返回的列表是 List
接口(interface)的不同实现(即不是 ArrayList
),则无法将其转换为 ArrayList
。您可以构造一个新的 ArrayList
并使用从 API 获取的 List
对其进行初始化,但我不明白这一点。
您正在使用的API正在返回List
接口(interface)的一些实现。您无需关心他们当前正在使用哪种实现。这就是使用接口(interface)的要点 - 他们明天可以更改实现,但由于 API 返回 List
接口(interface)类型,因此使用该 API 的任何代码都不必更改。
关于java - Java中如何获取返回类型为List接口(interface)的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27340729/