拨开荷叶行,寻梦已然成。仙女莲花里,翩翩白鹭情。
IMG-LOGO
主页 文章列表 Paths.get 和Path.of 的区别

Paths.get 和Path.of 的区别

白鹭 - 2022-10-03 2475 0 2

一、概述

在本文中,我们将评论Paths.get()Path.of()方法之间的异同。

2. 相同的行为

Path.of()方法将URI作为参数并将其转换为关联对象的Path

现在让我们看一下Paths.get()的代码:

public final class Paths {
 public static Path get(URI uri) {
 return Path.of(uri);
 }
 }

正如我们所见,Paths.get()所做的唯一事情就是调用Path.of().因此,这两种方法返回相同的结果。

三、方法的区别

我们现在将评论这两种方法之间的区别。

3.1。介绍版本

在Java 8 之前,无法在接口内定义默认静态方法。因此Path需要一个伴随接口Paths此时所有的工厂方法都在Paths 中定义。

然后这个限制被去掉了,在Java 11 中,工厂方法的代码最终被移到了Path接口中。此外,Paths.get()的代码已更新为Path.of()确实保留了Paths.get()以确保向后兼容性。

3.2.命名模式

代码不仅被移动了,而且工厂方法的名称也发生了变化。原始名称的问题在于它看起来像一个吸气剂。然而,Paths.get()没有得到任何属于Paths对象的东西。**Java 中静态工厂方法的标准名称of.**例如,EnumSet.of()遵循这种模式。因此,为了保持一致性,新方法被称为Path.of()

4. 我们应该使用哪一个?

如果我们使用Java 7 和10 之间的版本,我们别无选择,只能使用Paths.get()否则,如果我们使用的是早期版本,我们应该使用Path.of()正如该类的注释中所述,Paths类在未来的Java 版本中可能确实会被弃用。此外,直接使用Path中的工厂方法可以节省额外的输入。

5. 结论

在本教程中,我们了解了两个相同的方法Paths.get()Path.of(),由于某些历史原因共存。我们已经分析了它们的差异,并根据我们的情况得出了最适合我们的结论。


标签:

0 评论

发表评论

您的电子邮件地址不会被公开。 必填的字段已做标记 *