web-dev-qa-db-fra.com

Pourquoi la classe Duration n'a-t-elle pas la méthode 'toSeconds ()'?

Je regardais la classe Durée dans Java 8 et remarquai qu'elle ne possédait pas:

long toSeconds();

Mais il a tous les autres toXXXXX() pour obtenir des jours, des heures, des minutes, des millis, des nanos. Je vois une méthode getSeconds() qui renvoie le nombre de secondes dans cet objet duration. Il existe également une méthode get(TemporalUnit unit) pour obtenir la durée comme unité de temps requise. Mais pourquoi ne pas garder la méthode toSeconds() pour la cohérence?

40
Ali

Regardons ce que les docs disent:

Cette classe modélise une quantité ou une quantité de temps en termes de secondes et de nanosecondes. 

Cela signifie fondamentalement que l'unité utilisée pour stocker la quantité de temps représentée est secondes. Par exemple, pour stocker la durée 5 minutes et 10 nanosecondes, 300 (secondes) et 10 (nanosecondes) sont stockées. De ce fait, il n'est pas nécessaire de convertir en secondes. Vous obtenez les secondes en utilisant getSeconds().

Vous voyez ce que je veux dire ici? Toutes les autres méthodes convertissent en les unités correspondantes: jours, minutes, heures ... C'est pourquoi elles commencent par to, ce qui signifie convertedTo. Comme il n'est pas nécessaire d'effectuer une conversion pour obtenir la durée en secondes, la méthode qui renvoie la durée en secondes commence par get.

53
Sweeper

Il s'agit d'un problème connu dont le correctif est prévu pour Java 9: ​​ https://bugs.openjdk.Java.net/browse/JDK-8142936

Nouvelle méthode ajoutée dans Java 9, toSeconds. Voir code source .

/**
 * Gets the number of seconds in this duration.
 * <p>
 * This returns the total number of whole seconds in the duration.
 * <p>
 * This instance is immutable and unaffected by this method call.
 *
 * @return the whole seconds part of the length of the duration, positive or negative
 */
public long toSeconds() {
    return seconds;
}
36
JB Nizet

Parce que Durée

[...] modélise une quantité ou une durée en termes de secondes et de nanosecondes [...]

donc il offre les deux méthodes 

Il n'y a pas de logique "to seconds" puisqu'il est déjà est en secondes.

4
luk2302

Citation de http://tutorials.jenkov.com/Java-date-time/duration.html :

"Vous vous demandez peut-être s'il n'y a pas de méthode toSeconds (). Il n'y en a pas car c'est la même chose que la partie secondes de Duration. Vous pouvez obtenir la partie secondes de Duration en utilisant la méthode getSeconds () comme expliqué plus tôt."

1
Gyrotank