一、概述
在本文中,我们将评论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 评论