57 votes

Paths.get vs Path.of

D'après ce que je sais, Paths.get y Path.of semblent faire exactement la même chose, en transformant une ou plusieurs chaînes de caractères en une Path la documentation https://docs.oracle.com/javase/8/docs/api/java/nio/file/Paths.html#get-java.lang.String-java.lang.String...- y https://docs.oracle.com/en/java/javase/13/docs/api/java.base/java/nio/file/Path.html#of(java.lang.String,java.lang.String...) utiliser le même libellé. Sont-ils en fait identiques ?

Path.of a été introduit plus tard. Conjecture : elle a été introduite pour des raisons de cohérence. Foo.of le style. Dans ce cas, il serait considéré comme préférable pour des raisons de cohérence/esthétique ?

63voto

Johannes Kuhn Points 5237

En effet, Path.of a été introduit par la suite.

Conjecture : elle a été introduite pour des raisons de cohérence. Foo.of le style.

D'après les archives de la liste de diffusion, ceci La méthode était autrefois appelée Path.get :

Les principaux changements dans sont dans le chemin et les chemins dans java.nio.file.

Ce patch copie les méthodes de Paths.get() vers les méthodes statiques de Path.get() et modifie les premières pour appeler les secondes méthodes respectives. La spécification de Path est légèrement nettoyée pour ne pas faire référence à Paths ni à elle-même, par exemple, "(see Path)". Des annotations @implSpec sont ajoutées à Paths pour indiquer que les méthodes appellent simplement leurs homologues dans Path.
...

Cela a été modifié plus tard lorsque Brian Goetz l'a suggéré pour être cohérent avec Foo.of :

Séparément, Brian Goetz a suggéré hors liste qu'il serait préférable plus cohérent si ces méthodes d'usine étaient nommées "of". webrev sera mis à jour pour voir ce que cela donne.

Maintenant, pour votre dernière question : "Dans ce cas, serait-elle considérée comme préférable pour des raisons de cohérence/esthétique ?"
Dans le courrier initial Brian Burkhalter a déclaré qu'il a mis à jour toutes les références à la nouvelle méthode dans le document Path :

Tous les fichiers sources de java.base sont modifiés pour remplacer Paths.get() par Path.get() et pour supprimer l'importation de Paths. ...

Je conclurais donc que Path.of est en effet préférable à Paths.get .
En effet, si vous regardez le Javadoc pour Paths pour Java 13 vous trouverez cette note :

Note de l'API :
Il est recommandé d'obtenir un Path via le Path.of au lieu de passer par la méthode get les méthodes définies dans cette classe, car celle-ci peut être dépréciée dans une version ultérieure.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X