Почему новый объект Path в Java 7 не может релятивизироваться, когда только один Path включает корневой элемент?

Согласно java.nio.file.Path:

Относительный путь не может быть построен, если только один из путей имеет корневую компоненту.

Почему это так? Почему так невозможно релятивизировать:

Path path1 = Paths.get("/home/test");
Path path2 = Paths.get("home");

// throws an IllegalArgumentException
Path path3 = path1.relativize(path2);

Я представлял себе, что путь3 приведет к относительному пути .../. Почему для Path вернуть результат, который предполагает, что два каталога находятся на одном уровне внутри файловой системы, если не определены корневые элементы, но когда только один путь определяет корневой элемент (как показано выше), относительный путь не может быть определен?

т.е.

Path path1 = Paths.get("home/test");
Path path2 = Paths.get("user");

// results in ../../user
Path path3 = path1.relativize(path2);

5
задан Joachim Sauer 30 August 2011 в 11:57
поделиться