Недавно я делал некоторую кодировку, используя пакет java.nio.file, представленный на Java 7, и увидел пример с использованием 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 (из абстрактного класса, я думаю), используя то, что, как мне кажется, называется статическим factory, но FileSystem также не реализует интерфейс.
Мой вопрос: кто-нибудь знает/может объяснить, где фактически реализован интерфейс Path, поскольку я не могу найти, где это происходит.