Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 可以列出<;性格>;被实例化?_Java - Fatal编程技术网

Java 可以列出<;性格>;被实例化?

Java 可以列出<;性格>;被实例化?,java,Java,当我写这篇文章时,它有一个错误“无法实例化类型列表” Character[]ray={'a','s','e'}; listl=新列表(Arrays.asList(ray)); 但是当我写这篇文章时,没有错误 Character[] ray = {'a','s','e'}; List<Character> l = Arrays.asList(ray); Character[]ray={'a','s','e'}; List l=数组。asList(光线); 那为什么呢 编辑:在第二

当我写这篇文章时,它有一个错误“无法实例化类型列表

Character[]ray={'a','s','e'};
listl=新列表(Arrays.asList(ray));
但是当我写这篇文章时,没有错误

Character[] ray = {'a','s','e'};
List<Character> l = Arrays.asList(ray);
Character[]ray={'a','s','e'};
List l=数组。asList(光线);
那为什么呢

编辑:在第二个示例中,l的类型是什么?

问题在于它是一个(它定义了一些方法,但没有实现它们)。尝试使用实现它的类,如或:

listl=newarraylist(Arrays.asList(ray));
问题在于它是一个(它定义了一些方法,但没有实现它们)。尝试使用实现它的类,如或:

listl=newarraylist(Arrays.asList(ray));

那么为什么在第二个示例中我没有错误?那么l的类型是什么?@nubhi219您可以将ArrayList强制转换为List(
List x=new ArrayList()
),但不能直接实例化List(
new List()
)。我怀疑
Arrays.asList()
创建了一个ArrayList,然后将结果作为列表传递给您。@BrendanLong很好的解释,但有一个缺点:
Arrays.asList()
在其参数数组周围创建了一个“包装器”,而不是创建一个合适的
ArrayList
。有一些区别,其中最重要的可能是(a)对结果列表的更新更新给定数组;(b)您不能在这样的
列表中添加或删除元素,只能更新现有元素。不幸的是,问题并没有那么清楚@布伦丹·朗:列表是一个接口,所以我不能实例化它,我明白。但为什么我可以将ArrayList转换为List?这是接口的一个属性,它能够将实现某个接口的类的对象强制转换到该接口吗?@nubhi219接口的全部要点是,您可以对实现它们的所有内容一视同仁,它是由语言实现的,允许您将实现接口的类强制转换到该接口。对于List,ArrayList和LinkedList都实现了List,这很有用的原因是您可以返回一个List,而调用函数的人不需要知道它是ArrayList还是LinkedList(或者实现List的任何其他内容)。这使您可以更改某些内容的内部工作方式,而不会破坏使用您的代码的人的工作方式。那么,为什么在第二个示例中我没有错误呢?那么l的类型是什么?@nubhi219您可以将ArrayList强制转换为List(
List x=new ArrayList()
),但不能直接实例化List(
new List()
)。我怀疑
Arrays.asList()
创建了一个ArrayList,然后将结果作为列表传递给您。@BrendanLong很好的解释,但有一个缺点:
Arrays.asList()
在其参数数组周围创建了一个“包装器”,而不是创建一个合适的
ArrayList
。有一些区别,其中最重要的可能是(a)对结果列表的更新更新给定数组;(b)您不能在这样的
列表中添加或删除元素,只能更新现有元素。不幸的是,问题并没有那么清楚@布伦丹·朗:列表是一个接口,所以我不能实例化它,我明白。但为什么我可以将ArrayList转换为List?这是接口的一个属性,它能够将实现某个接口的类的对象强制转换到该接口吗?@nubhi219接口的全部要点是,您可以对实现它们的所有内容一视同仁,它是由语言实现的,允许您将实现接口的类强制转换到该接口。对于List,ArrayList和LinkedList都实现了List,这很有用的原因是您可以返回一个List,而调用函数的人不需要知道它是ArrayList还是LinkedList(或者实现List的任何其他内容)。这使您可以更改某些内容的内部工作方式,而不会破坏使用您的代码的人员的工作方式。
Character[] ray = {'a','s','e'};
List<Character> l = Arrays.asList(ray);
List<Character> l = new ArrayList<Character>(Arrays.asList(ray));