永发信息网

java中接口的问题

答案:4  悬赏:0  手机版
解决时间 2021-05-08 05:41
  • 提问者网友:浩歌待明月
  • 2021-05-08 01:58

接口不是要实现后才能使用吗?下面代码,为什么能通过编译呢?

import java.util.*;
class IteratorTest
{
public static void main(String[] args)
{
String[] strs={"one","two","three"};
List<String> l=Arrays.asList(strs);//就是这句话
System.out.println(l);
}
}

我认为,List是一个接口,这段代码通过了编译,就是说Arrays.asList(strs)返回的是一个实现了List接口的类的对象,但不知道是哪个。

最佳答案
  • 五星知识达人网友:想偏头吻你
  • 2021-05-08 03:02

我帮你看了下java的API

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

返回一个受指定数组支持的固定大小的列表。(对返回列表的更改会“直写”到数组。)此方法同 Collection.toArray 一起,充当了基于数组的 API 与基于 collection 的 API 之间的桥梁。返回的列表是可序列化的,并且实现了 RandomAccess。

此方法还提供了一个创建固定长度的列表的便捷方法,该列表被初始化为包含多个元素: List stooges = Arrays.asList("Larry", "Moe", "Curly");




参数:
a - 支持列表的数组。
返回:
指定数组的列表视图。
另请参见:
Collection.toArray()

接着我看了下


public interface RandomAccess


List 实现所使用的标记接口,用来表明其支持快速(通常是固定时间)随机访问。此接口的主要目的是允许一般的算法更改其行为,从而在将其应用到随机或连续访问列表时能提供良好的性能。





不能看出list实现了RandomAccess



Arrays.asList(strs)返回的RandomAccess



用子类new出父类当然就没问题



这个问题告诉你要学看API

全部回答
  • 1楼网友:酒醒三更
  • 2021-05-08 05:39

List<String> l=Arrays.asList(strs);

我也是菜B一个呵呵 说错了别见怪 asList 是一个static 方法 是可以通过类名直接调用的 也就是说可以不用实例化一个类对象 了解? <String> 这个是代表泛型的意思 。。。。。

  • 2楼网友:你可爱的野爹
  • 2021-05-08 04:31

编译看的是双方面,=号左边是通常是被继承类,=号右边是继承类

List中存在asList该方法,而ArrayList中也有asList方法当然可以通过

  • 3楼网友:骨子里都是戏
  • 2021-05-08 04:18
List<String> 是父类 ArrayList 或者Arrays.是子类,你这样得到是子类的,当然可以使用啦
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯