通过在Java中返回接口对象意味着什么?

时间:2011-07-20 10:03:50

标签: java

首先,请先查看此文档:

http://htmlcleaner.sourceforge.net/doc/org/htmlcleaner/TagNode.html

它有一个名为:

的函数
  

getAllElementsList(boolean isRecursive)。

它将返回一个叫做的东西:

  

列表

好的,当我查看“List”的文档时,我检查一下: http://download.oracle.com/javase/1.5.0/docs/api/java/util/List.html

这是一个界面:

public interface List<E> extends Collection<E>

我的问题是......它扩展了我的作用是什么?他希望我有一个实现List接口的对象可以用作返回类型吗?

此外,<E>是什么意思?谢谢。

5 个答案:

答案 0 :(得分:6)

接口始终是首选的返回类型,因为代码可以稍后切换到另一个实现(例如,优化性能),但所有客户端代码将继续工作。

<E>generic definition,使用List时,您可以指定要保留的对象类型。例如List<String>。这确保了在使用列表元素时的编译时安全性。

答案 1 :(得分:1)

<E>是通用集合元素名称。

返回&#34;列表&#34;是一种数据隐藏的形式&#34; - 你模糊了实际的实现,以便你可以改变它,并且他们不会硬编码依赖它。你真的要返回一些实现列表的东西,但是当你说你返回List时,你会返回一个接口而不是一个Type(这是一个设计原则)。

答案 2 :(得分:1)

该函数返回一个Object,其类实现List!而且,E是占位符。

答案 3 :(得分:1)

是的,您需要返回任何实现List<E>的内容,例如ArrayList<E>LinkedList<E>

<E>是一种通用类型,即您可以将其替换为具体的类或接口,例如List<Integer>定义列表以仅包含Integer对象。

请注意,ListList<E>不同,前者禁用了泛型类型检查。如果该方法具有返回类型List,那么它很可能是旧代码,或者出于兼容性原因而在1.5之前使用Java。现在你最有可能使用List<?>作为返回类型,如果这无关紧要。

答案 4 :(得分:1)

是的,它返回一个实现接口List的对象。 ArrayList就是一个例子。

E是列表将包含的对象的类型。

也许下面的代码可以为您提供更多帮助。

List<String> lString = new ArrayList<String>();
lString.add("test1");
lString.add("test2");