A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 徘徊消逝中 中级黑马   /  2014-6-18 21:55  /  947 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 徘徊消逝中 于 2014-6-20 01:44 编辑

在集合中可以看到这样的表达:List list = Arrays.asList(“AA”,“BB”,“CC”,“DD”);
但是List不是接口么,那么接口也会有实例对象么?不是只应该只有其实现类对象么,如arrayList等等。至少此处asList返回的就是一个List对象,那么这个返回值就是一个List接口的对象,怎么看都有点别扭,想不通········

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

9 个回复

倒序浏览
这个是java的多态 父类引用指向种类对象
回复 使用道具 举报
父类引用指向子类对象
回复 使用道具 举报
a5702727 发表于 2014-6-18 22:01
这个是java的多态 父类引用指向种类对象

但是asList返回值并不是List的子类,而就是List啊,这个怎么解释呢?
回复 使用道具 举报
Nathan矫立伟 发表于 2014-6-18 22:38
父类引用指向子类对象

但是asList返回值并不是List的子类,而就是List啊,这个怎么解释呢?
回复 使用道具 举报
徘徊消逝中 发表于 2014-6-18 22:53
但是asList返回值并不是List的子类,而就是List啊,这个怎么解释呢?

ArrayList实现了List接口
回复 使用道具 举报
a5702727 发表于 2014-6-18 22:55
ArrayList实现了List接口

你的意识是说:static List asList(Object...o)这个方法虽然返回的是List,但是实际上是List的实现类arrayList?
回复 使用道具 举报
徘徊消逝中 发表于 2014-6-18 23:15
你的意识是说:static List asList(Object...o)这个方法虽然返回的是List,但是实际上是List的实现类ar ...

我擦  我看错题了 。。。我以为是List list =new ArrayList();我还纳闷 你技术分这么高还能不会这个简单问题。。。不过你可以看一下asList里面是如何写的  看下 他返回的是什么对象  我感觉是多态 有可能返回的就是一个list的子类

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

回复 使用道具 举报
a5702727 发表于 2014-6-18 23:28
我擦  我看错题了 。。。我以为是List list =new ArrayList();我还纳闷 你技术分这么高还能不会这个简单 ...

好的,同样谢谢你,学的时候没注意,回过头来再看,总感觉差点什么
回复 使用道具 举报
alive 来自手机 中级黑马 2014-6-20 02:12:55
10#
类型提升,接口中多态返回值不也是接口么,借口是不能new对象的,但是发生多态时new出来的对象不就是返回的接口么
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马