簡體   English   中英

java.nio.file:Path接口實際在哪里實現?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM