Java 为什么路径上的操作以静态方法的形式实现?

Java 为什么路径上的操作以静态方法的形式实现?,java,file,coding-style,java-7,Java,File,Coding Style,Java 7,总之,path.delete()看起来比Files.delete(path)好一点。但是java.nio.file包的开发人员更喜欢以Path的静态方法的形式在Path上实现操作。为什么?因为正如Javadoc所述,a是 可用于在文件系统中定位文件的对象。会的 通常表示依赖于系统的文件路径 它实际上不是一个文件,它只是描述了文件的路径。所以没有什么可以删除的,或者说删除在路径上没有意义。它只在文件上有意义。它是实用的实现,是一种设计模式,如集合/集合、文件/文件、路径/路径。路径可以处理不同的(

总之,
path.delete()
看起来比
Files.delete(path)
好一点。但是
java.nio.file
包的开发人员更喜欢以
Path
的静态方法的形式在
Path
上实现操作。为什么?

因为正如Javadoc所述,a是

可用于在文件系统中定位文件的对象。会的 通常表示依赖于系统的文件路径


它实际上不是一个文件,它只是描述了文件的路径。所以没有什么可以删除的,或者说删除在路径上没有意义。它只在文件上有意义。

它是实用的实现,是一种设计模式,如集合/集合、文件/文件、路径/路径。路径可以处理不同的(虚拟)“文件”系统,如zip文件系统。因此,路径与文件系统相关联,
delete
将委托给文件系统delete。例如:

对于zip文件系统,视图可以具有文件路径
c:\data\x\y
zip路径相对
x/y
。您可以在路径之间移动/重命名/复制。让文件操作驻留在Path中将是纯粹的委托调用

他们选择让路径成为一个纯数据结构,甚至比文件更像一个URL


因此,有一些代码设计的理由。但是大家都同意,有几个~s类,可能混合使用(路径+文件+路径+文件),不利于干净的API风格设计。

那么我的问题是,为什么要有这样弱的路径抽象而不是实际的文件抽象?@Lescott我不得不说关注点分离。但是你必须向语言设计者寻求一个完整的答案。