Ява.НИО.файл: где фактически реализован интерфейс Path?

недавно я делал кодирование с помощью java.НИО.файловый пакет представлен в Java 7 и видел пример использования пути следующим образом:

Path path = Paths.get("C:Users");

учитывая, что путь-это интерфейс, я был смущен тем, как вы могли бы ссылаться на него, однако после некоторых исследований я обнаружил, что ссылка на интерфейс разрешена, но она должна указывать на класс, который реализует интерфейс. Глядя на это, я посмотрел на класс Paths и увидел, что он не реализовал Path. Выглядящий в исходном коде фактические пути метода.метод get выглядит следующим образом:

public static Path get(String first, String... more) {
    return FileSystems.getDefault().getPath(first, more);
}    

метод сначала возвращает объект типа FileSystem (из абстрактного класса, который я думаю), используя то, что я считаю, называется статическим заводским методом, но файловая система также не реализует интерфейс.

мой вопрос: кто-нибудь знает/может объяснить, где интерфейс пути фактически реализован, поскольку я не могу найти, где это происходит.

2 ответов


если вы посмотрите внимательно, вы заметите, что метод getPath с FileSystem object возвращает реализацию интерфейса Path. Призывая FileSystems.getDefault() вы получите реализацию FileSystem интерфейс ведьмы будет зависеть от системы. На системе Linux, вы получите LinuxFileSystem объект ведьма выходит UnixFileSystem класса.

вы можете посмотреть, например, на UnixFileSystem класс из OpenJDK witch-это реализация FileSystem интерфейс.

вот связь с реализацией getPath метод UnixFileSystem, ведьма вернет экземпляр UnixPath.

вы должны помнить, что FileSystems.getDefault возврат реализации зависит от операционной системы. Кроме того, исходный код этих классов недоступен в oracle jdk.


внутри IDE NetBeans, вы можете просмотреть сведения о реализации класса Paths, выполнив следующие действия:

  • Шаг первый:

    нажмите курсор на строку, в которой вы написали свой код пути. Примером пути может быть:

путь p = пути.get ("someDir\someOtherDir");

  • Шаг Второй:

Нажмите Кнопку Отладка / Шаг В (F7)

это вызовет детали реализации путей