Paths.get vs. Path.of

Lesezeit: 2 Minuten

Benutzeravatar von rwallace
rwallace

Soweit ich sagen kann, Paths.get Und Path.of scheinen genau das Gleiche zu tun und eine oder mehrere Saiten in eine zu verwandeln Path Objekt; die Dokumentationen für Paths.get Und Path.of den gleichen Wortlaut verwenden. Sind sie tatsächlich identisch?

Path.of wurde erst später eingeführt.

Vermutung: Es wurde aus Gründen der Konsistenz eingeführt Foo.of Stil. Wäre es in diesem Fall aus Gründen der Konsistenz/Ästhetik vorzuziehen?

  • Ich denke, Sie haben Recht. Eine schnelle Suche in den Java-Diskussionslisten ergab Folgendes: mail.openjdk.java.net/pipermail/nio-dev/2018-March/004810.html Ich lese aber immer noch, um eine Antwort zu schreiben.

    – Johannes Kuhn

    30. Okt. 2019 um 18:37 Uhr

  • ich bevorzuge Path.of weil es keinen zusätzlichen Import erfordert

    – ZhekaKozlov

    22. Januar 2020 um 15:17 Uhr

Benutzer-Avatar von Johannes Kuhn
Johannes Kuhn

In der Tat, Path.of wurde später eingeführt.

Vermutung: Es wurde aus Gründen der Konsistenz eingeführt Foo.of Stil.

Aus dem Mailinglisten-Archiv, dies Methode wurde einmal aufgerufen Path.get:

Die wichtigsten Änderungen betreffen Path und Paths in java.nio.file.

Dieser Patch kopiert die Paths.get()-Methoden in statische Methoden in Path.get() und ändert die ersteren, um die letzteren entsprechenden Methoden aufzurufen. Die Pfadangabe wurde leicht bereinigt, sodass sie sich weder auf Pfade noch auf sich selbst bezieht, z. B. „(siehe Pfad).“ @implSpec-Anmerkungen werden zu Paths hinzugefügt, um anzuzeigen, dass die Methoden einfach ihre Gegenstücke in Path aufrufen.

Dies wurde später geändert, als Brian Goetz schlug vor, dass dies konsistent sei Foo.of:

Unabhängig davon schlug Brian Goetz außerhalb der Liste vor, dass es konsistenter wäre, wenn diese Factory-Methoden „von“ genannt würden, daher gehe ich davon aus, dass die Webrev aktualisiert wird, um zu sehen, wie das aussieht.

Nun zu Ihrer letzten Frage: „Wäre es in diesem Fall aus Gründen der Konsistenz/Ästhetik vorzuziehen?“
Im erste Mail Brian Burkhalter sagte, dass er alle Verweise auf die neue Methode in aktualisiert habe Path:

Alle Quelldateien in java.base werden geändert, um Paths.get() in Path.get() zu ändern und den Import für Paths zu entfernen. …

Daher würde ich daraus schließen Path.of ist in der Tat vorzuziehen Paths.get.
In der Tat, wenn man sich das anschaut Javadoc für Paths für Java 13 Sie finden diesen Hinweis:

API-Hinweis:
Es wird empfohlen, eine zu erhalten Path über die Path.of Methoden statt über die get In dieser Klasse definierte Methoden, da diese Klasse in einer zukünftigen Version möglicherweise veraltet ist.

  • Beachten Sie, dass NIO.2 in Java 7 eingeführt wurde, als statische Methoden in Schnittstellen nicht möglich waren. Es brauchte also eine Begleitklasse, Paths. Die Verwendung der Factory-Methode der Schnittstelle reduziert die Anzahl der Typen, mit denen der Code umgehen muss. Der Namensstil ist nur ein weiterer Punkt, der aufgrund dieser Möglichkeit überarbeitet wurde.

    – Holger

    7. Januar 2020 um 14:53

1452220cookie-checkPaths.get vs. Path.of

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy