[英]java.nio.file: Where is the Path interface actually implemented?
最近我使用Java 7中引入的java.nio.file包進行了一些編碼,並看到了一個使用Path的示例:
Path path = Paths.get("C:\\Users");
鑒於Path是一個接口,我對如何引用它感到困惑,但經過一些研究后我發現允許對接口的引用,但它必須指向實現接口的類。 從這看起來我查看了Paths類,發現它沒有實現Path。 查看源代碼的實際方法Paths.get方法如下:
public static Path get(String first, String... more) {
return FileSystems.getDefault().getPath(first, more);
}
該方法首先使用我認為稱為靜態工廠方法的方式返回FileSystem類型的對象(我認為是抽象類),但FileSystem也沒有實現該接口。
我的問題是有沒有人知道/能夠解釋Path接口實際實現的位置,因為我似乎無法找到它發生的位置。
如果仔細觀察,您會注意到FileSystem
對象的getPath
方法返回Path接口的實現。 通過調用FileSystems.getDefault()
您將檢索將取決於系統的FileSystem
接口的實現。 在Linux系統上,您將獲得LinuxFileSystem
對象,擴展UnixFileSystem
類。
您可以在UnixFileSystem
類中查找示例,它是FileSystem
接口的實現。
這是與UnixFileSystem實現getPath
方法的鏈接,它將返回UnixPath的實例。
您必須記住FileSystems.getDefault
返回依賴於操作系統的實現。 此外,oracle jdk中沒有這些類的源代碼。
在NetBeans IDE中 ,您可以通過執行以下操作查看Paths類的實現詳細信息:
第一步:
在您編寫路徑代碼的行上單擊光標。 路徑示例如下:
路徑p = Paths.get(“someDir \\ someOtherDir”);
單擊Debug | 步入(F7)
它將顯示Paths的實現細節
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.