Paths.get 和 Path.of 的區別
瀏覽人數:989最近更新:
一、概述
在本文中,我們將評論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(),
由於某些歷史原因共存。我們已經分析了它們的差異,並根據我們的情況得出了最適合我們的結論。
本作品係原創或者翻譯,採用《署名-非商業性使用-禁止演繹4.0國際》許可協議