gpt4 book ai didi

JAVA:与实例引用混淆

转载 作者:太空宇宙 更新时间:2023-11-04 11:33:13 25 4
gpt4 key购买 nike

我对实例及其实现有一些非常严重的困惑。

List<String> lines = Files.readAllLines(Paths.get(fileAddress),
Charset.defaultCharset());

上面的代码是有效的,因为我知道 List<String>是一个接口(interface),但我可以使用它的类型作为引用变量,而且我也知道 RHS 实际上返回 ArrayList这是 List 的实现。另外,lines.getClass().getName()返回java.util.ArrayList可以肯定的是。

但令人惊讶的是,当我这样做时,

ArrayList<String> lines = Files.readAllLines(Paths.get(fileAddress),
Charset.defaultCharset());

我收到错误,

Type mismatch: cannot convert from List<String> to ArrayList<String>

这怎么可能?

最佳答案

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

java.util.listinterface并且有一个包含所有已知列表接口(interface)实现的列表。

这是 readAllLines 的签名方法
public static List<String> readAllLines(Path path, Charset cs) throws IOException
Files.readAllLines 的文档.

编译器仅具有 readAllLines 的信息方法将返回 List<String> ,但它不知道它将是哪个实现。因为它编译器无法编译代码。

关于JAVA:与实例引用混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43562492/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com