web-dev-qa-db-ja.com

Durationクラスに 'toSeconds()'メソッドがないのはなぜですか?

私は Duration Java 8のクラス)を見ていましたが、次のものがないことに気付きました:

_long toSeconds();
_

ただし、日、時間、分、ミリ、ナノを取得するためのその他すべてのtoXXXXX()があります。このdurationオブジェクト内の秒数を返すgetSeconds()メソッドがあります。要求された時間単位として期間を取得するget(TemporalUnit unit)メソッドもあります。しかし、一貫性のためにtoSeconds()メソッドを保持しないのはなぜですか?

44
Ali

docs の発言を見てみましょう:

このクラスは、秒またはナノ秒の観点から量または時間をモデル化します。

これは基本的に、表示される時間の量を格納するために使用される単位がsecondsであることを意味します。たとえば、5分10ナノ秒の期間を保存するには、300(秒)と10(ナノ秒)が保存されます。このため、から秒に変換する必要はありません。 getSeconds()を使用して秒を取得するget

ここで私が何を意味するか見てください?他のすべてのメソッドは、対応する単位を日数、分数、時間数に変換する...だから、to、つまりconvertedToで始まる。秒単位の期間を取得するために変換を行う必要がないため、秒単位の期間を返すメソッドはgetで始まります。

55
Sweeper

これは、Java 9: https://bugs.openjdk.Java.net/browse/JDK-8142936 に修正が予定されている既知の問題です。

Java 9、toSeconds。に新しいメソッドが追加されました。 ソースコード を参照してください。

/**
 * 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;
}
39
JB Nizet

なぜなら 期間

[...]秒とナノ秒に関して量または時間をモデル化します[...]

したがって、2つの方法を提供します

秒単位で既にisであるため、論理的な「to seconds」はありません。 。

4
luk2302

http://tutorials.jenkov.com/Java-date-time/duration.html からの引用:

「toSeconds()メソッドがないかどうかを自問するかもしれません。それはDurationの秒部分と同じだからではありません。説明のようにgetSeconds()メソッドを使用してDurationの秒部分を取得できます。ついさっき。"

1
Gyrotank