首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Arrays.asList(T.( a)返回接口?

Arrays.asList(T.( a)返回接口?
EN

Stack Overflow用户
提问于 2015-04-13 06:15:07
回答 4查看 619关注 0票数 2

我正在查看来自Oracle的Java,特别是作为java.util.Arrays类的一部分的这个方法:

public static <T> List<T> asList(T... a)

但是,当这个方法显然是一个接口时,它怎么可能返回一个列表对象呢?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-04-13 06:16:14

  • 这被称为多态性
  • 这意味着您可以使用父类型引用来引用子类型。
  • 在这种情况下,该方法返回实现List接口的类的实例。

Arrays.asList方法的源代码

代码语言:javascript
运行
复制
 public static <T> List<T> More ...asList(T... a) {
   return new ArrayList<T>(a);
}
票数 4
EN

Stack Overflow用户

发布于 2015-04-13 06:16:52

任何将接口类型作为其返回类型的方法实际上都返回实现该接口的某个类的实例。将接口类型作为返回类型的目的是允许方法的开发人员在不更改API的情况下更改方法返回的实现。

对于Arrays.asList,返回Arrays$ArrayList的一个实例( Arrays类中的一个嵌套类)。

票数 4
EN

Stack Overflow用户

发布于 2015-04-13 06:18:31

方法将返回子类对象。检查java的源代码

代码语言:javascript
运行
复制
public static <T> List<T> More ...asList(T... a) {
        return new ArrayList<T>(a);
  }

http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/java/util/Arrays.java#Arrays.asList%28java.lang.Object%5B%5D%29

阅读多态以及

polymorphism.htm

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29598883

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档