Java Iterable<;路径>;vs路径

Java Iterable<;路径>;vs路径,java,path,iterable,Java,Path,Iterable,为什么不能将iterable对象放入路径引用(实现iterable的路径引用)中 Iterable<Path> dirs = FileSystems.getDefault().getRootDirectories(); for (Path name: dirs) { System.err.println(name); } Iterable dirs=FileSystems.getDefault().getRootDirectories(); for(路径名:dirs){ S

为什么不能将iterable对象放入路径引用(实现iterable的路径引用)中

Iterable<Path> dirs = FileSystems.getDefault().getRootDirectories();
for (Path name: dirs) {
    System.err.println(name);
}
Iterable dirs=FileSystems.getDefault().getRootDirectories();
for(路径名:dirs){
System.err.println(名称);
}

如果我用
Path
更改
Iterable
,它确实会给我一个编译错误。为什么?它不应该更易于编程以实现接口?

Path是一个Iterable,但Iterable不是Path。
因此,您需要进行类型转换

因此,请查看
java.nio.file
API文档:

public interface Path
    extends Comparable<Path>, Iterable<Path>, Watchable
公共接口路径
扩展可比较的、可观察的、可观察的
因此,
路径
是一个
可编辑的
。这意味着什么?显而易见的解释是递归层次结构有一个中心概念。事实并非如此。API有点混乱。
路径
可以由一系列原子元素组成。例如,我猜
/etc/passwd
是一个序列
(etc,passwd)
。显然,我们这里有不止一个概念,但建模很弱


所以
FileSystem.getRootDirectory
将返回一个集(不知道为什么它只能
Iterable
)一个完全限定的路径。(例如,我猜
(C:\,D:\,Z:\)
)集的每个元素都将是(应该是)路径原子序列。
getRoorDirectories
返回单个
path
,其中包含完整的限定路径名作为其元素是没有意义的。希望将返回的
Iterable
转换为
path
会失败。

我不理解这个问题。你能补充解释一下你的想法吗应该能够写,以及你期望它做什么。
Path
Iterable
更专业化-因此如果
getRootDirectories()
只收缩
Iterable
,你就不能将其分配给更特殊的类型。实际上,该转换应该失败!