Paths.get vs Path.of

2022-08-31 19:58:52

据我所知,似乎做了完全相同的事情,将一个或多个字符串变成一个对象;Paths.getPath.of 的文档使用相同的措辞。它们实际上是相同的吗?Paths.getPath.ofPath

Path.of是后来引入的。

猜想:它的引入是为了一致的风格。在这种情况下,从一致性/美学角度来看,是否更可取?Foo.of


答案 1

事实上,后来被引入。Path.of

猜想:它的引入是为了一致的风格。Foo.of

从邮件列表存档中,此方法曾经称为 Path.get

中的主要更改是在java.nio.file中的Path和Path中。

此修补程序将 Paths.get() 方法复制到 Path.get() 中的静态方法,并修改前者以调用后者各自的方法。Path 规范稍微清理了一下,既不引用 Paths,也不引用其本身,例如,“(请参阅 Path)”,@implSpec注释被添加到 Path 中,以指示这些方法只是在 Path 中调用它们的对应项。
...

后来,当Brian Goetz建议它与Foo.of一致时,这种情况发生了变化:

另外,Brian Goetz建议,如果将这些工厂方法命名为“of”,它将更加一致,因此我假设webrev将更新以查看其外观。

现在回到你的最后一个问题:“在这种情况下,基于一致性/美学原因,它会被认为是可取的吗?
最初的邮件中,Brian Burkhalter说他更新了对新方法的所有引用:Path

java.base 中的所有源文件都将被修改,以将 Paths.get() 更改为 Path.get() 并删除 Paths 的导入。...

因此,我的结论是,这确实比.
事实上,如果你看看Javadoc for Paths for Java 13,你会发现这个注释:Path.ofPaths.get

API 注意
建议通过方法获取 a,而不是通过此类中定义的方法获取,因为此类在将来的版本中可能会被弃用。PathPath.ofget


答案 2

推荐