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?
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.
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