如何在Java中获取返回类型为List接口的对象?

时间:2014-12-07 07:42:29

标签: java list arraylist interface

我使用的是开源代码,其中一个API返回List<String>,而Listinterface。我知道他们这样设计它使API更通用,但我该如何使用它?我只是想得到结果。如果我尝试这样的话:

ArrayList<String> list = (ArrayList<String>) ... 

我收到ArrayList cannot be cast to java.util.ArrayList错误。

2 个答案:

答案 0 :(得分:1)

为什么不使用界面?

List list = (..your method call..)

如果API返回的列表是List接口的不同实现(即不是ArrayList),则无法将其强制转换为ArrayList。您可以构建一个新的ArrayList并使用从API获得的List对其进行初始化,但我不明白这一点。

您正在使用的API正在返回List接口的一些实现。您无需关心他们当前使用的实现。这是使用接口的重点 - 它们可以在明天更改实现,但由于API返回List接口类型,因此使用该API的任何代码都不必更改。

答案 1 :(得分:0)

如果您的api返回列表,那么您可以执行以下操作并获取列表的所有操作,如:

List list = myobject.mymethod();

然后无论像ArrayListLinkedList等列表实现,您仍然可以添加/删除/迭代/等。在列表中,因为你已经从mymethod的返回引用了ArrayList。