Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/356.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/1/list/4.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_List_Interface - Fatal编程技术网

JAVA:与实例引用混淆

JAVA:与实例引用混淆,java,list,interface,Java,List,Interface,我对实例及其实现有一些相当严重的困惑 List<String> lines = Files.readAllLines(Paths.get(fileAddress), Charset.defaultCharset()); 我犯了一个错误 类型不匹配:无法从列表转换为ArrayList 这怎么可能呢?Java编译器不知道该方法将返回哪种类型 java.util.list是一个包含所有已知列表接口实现的列表 这是readAllLines方法的签名 公共静态列表readAllLin

我对实例及其实现有一些相当严重的困惑

List<String> lines = Files.readAllLines(Paths.get(fileAddress),
    Charset.defaultCharset());
我犯了一个错误

类型不匹配:无法从列表转换为ArrayList

这怎么可能呢?

Java编译器不知道该方法将返回哪种类型

java.util.list
是一个包含所有已知列表接口实现的列表

这是
readAllLines
方法的签名
公共静态列表readAllLines(路径、字符集cs)引发IOException

文件

编译器只有
readAllLines
方法将返回
List
的信息,但它没有将返回哪个实现的信息。因为这样,编译器无法编译代码

Java编译器不“知道”该方法将返回哪种类型

java.util.list
是一个包含所有已知列表接口实现的列表

这是
readAllLines
方法的签名
公共静态列表readAllLines(路径、字符集cs)引发IOException

文件


编译器只有
readAllLines
方法将返回
List
的信息,但它没有将返回哪个实现的信息。因为这样,编译器无法编译代码

readAllLines
被定义为返回一个
列表
,这是调用代码必须依赖的。它实际返回一个
ArrayList
是一个实现细节,可以在不影响调用方的情况下进行更改“我还知道RHS实际上返回一个ArrayList,它是列表的一个实现”-您怎么知道的?通过查看实现,还是执行时的实际时间?
Files.readAllLines
的声明只说明它返回一个
列表
编译器根据定义编译代码。它不会窥探方法内部以查看实现的功能。(幸运的是.
readAllLines
被定义为返回一个
列表
,这是调用代码必须依赖的。它实际返回一个
ArrayList
是一个实现细节,可以在不影响调用方的情况下进行更改“我还知道RHS实际上返回一个ArrayList,它是列表的一个实现”-您怎么知道的?通过查看实现,还是执行时的实际时间?
Files.readAllLines
的声明只说明它返回一个
列表
编译器根据定义编译代码。它不会窥探方法内部以查看实现的功能。(幸运的是。)
ArrayList<String> lines = Files.readAllLines(Paths.get(fileAddress),
    Charset.defaultCharset());