Java Iterable<;路径>;vs路径
为什么不能将iterable对象放入路径引用(实现iterable的路径引用)中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<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
,你就不能将其分配给更特殊的类型。实际上,该转换应该失败!