public interface TemporalAmount
これは、時間の量のベース・インタフェース型です。量は、時系列の特定のポイントに関連付けられない点で、日付や時とは異なります。
この量は、getUnits()
およびget(TemporalUnit)
を介して公開される、TemporalUnit
のlong
へのMap
と考えることができます。簡単な例には、1つの単位/値ペア(「6時間」など)が含まれます。より複雑なケースには、複数の単位/値ペア(「7年3か月と5日」など)が含まれます。
2つの一般的な実装があります。Period
は、年、月および日を格納する日付ベースの実装です。Duration
は、秒およびナノ秒を格納する時間ベースの実装ですが、他のデュレーション・ベースの単位(分、時、固定の24時間日など)を使用して一部のアクセスを提供します。
このインタフェースはフレームワークレベルのインタフェースであり、アプリケーション・コードで広範囲にわたって使用しないようにしてください。かわりに、Period
やDuration
などの具象型のインスタンスを作成して使い回してください。
修飾子と型 | メソッドと説明 |
---|---|
Temporal |
addTo(Temporal temporal)
指定された時間的オブジェクトに加算します。
|
long |
get(TemporalUnit unit)
要求された単位の値を返します。
|
List<TemporalUnit> |
getUnits()
このTemporalAmountの値を一意に定義する単位のリストを返します。
|
Temporal |
subtractFrom(Temporal temporal)
指定された時間的オブジェクトからこのオブジェクトを減算します。
|
long get(TemporalUnit unit)
getUnits()
でリストされない単位のサポートを宣言できます。一般に、実装は開発者の便宜のために追加の単位を変換として宣言します。unit
- 値を返す対象のTemporalUnit
DateTimeException
- 単位の値を取得できない場合UnsupportedTemporalTypeException
- unit
がサポートされていない場合List<TemporalUnit> getUnits()
TemporalUnits
のリストは、実装クラスによって定義されます。このリストは、getUnits
が呼び出された時点での単位のスナップショットであり、可変ではありません。単位は、単位のデュレーションがもっとも長いものからもっとも短いものに向かって並んでいます。TemporalUnits
のリスト、nullでないTemporal addTo(Temporal temporal)
実装クラスにカプセル化されたロジックを使用して、指定された時間的オブジェクトに量を加算します。
このメソッドを使用する等価な方法が2つあります。1つ目はこのメソッドを直接呼び出すことです。2つ目は、Temporal.plus(TemporalAmount)
を使用する方法です。
// These two lines are equivalent, but the second approach is recommended dateTime = amount.addTo(dateTime); dateTime = dateTime.plus(adder);コード内での読みやすさが大幅に向上するため、2つ目のアプローチ(
plus(TemporalAmount)
)を使用することをお薦めします。Temporal
上の任意のメソッドを使用して時間的オブジェクトを問い合せ、加算を実行できます。返されるオブジェクトは、入力オブジェクトと同じ識別可能な型を持つ必要があります。
入力オブジェクトは変更できません。かわりに、元のオブジェクトの調整済のコピーを返す必要があります。これは、不変および可変の時間的オブジェクトに対して同等の安全な動作を提供します。
入力の時間的オブジェクトは、ISO以外の暦体系にすることができます。実装は、他の暦体系との互換性をドキュメント化したり、暦を問い合せる
ことによってISO以外の時間的オブジェクトを拒否したりすることもできます。
このメソッドは、複数のスレッドから並列に呼び出される可能性があります。呼び出されるときは、スレッドセーフである必要があります。
temporal
- 量が加算される時間的オブジェクト、nullでないDateTimeException
- 加算できない場合ArithmeticException
- 数値のオーバーフローが発生した場合Temporal subtractFrom(Temporal temporal)
実装クラスにカプセル化されたロジックを使用して、指定された時間的オブジェクトから量を減算します。
このメソッドを使用する等価な方法が2つあります。1つ目はこのメソッドを直接呼び出すことです。2つ目は、Temporal.minus(TemporalAmount)
を使用する方法です。
// these two lines are equivalent, but the second approach is recommended dateTime = amount.subtractFrom(dateTime); dateTime = dateTime.minus(amount);コード内での読みやすさが大幅に向上するため、2つ目のアプローチ(
minus(TemporalAmount)
)を使用することをお薦めします。Temporal
上の任意のメソッドを使用して時間的オブジェクトを問い合せ、減算を実行できます。返されるオブジェクトは、入力オブジェクトと同じ識別可能な型を持つ必要があります。
入力オブジェクトは変更できません。かわりに、元のオブジェクトの調整済のコピーを返す必要があります。これは、不変および可変の時間的オブジェクトに対して同等の安全な動作を提供します。
入力の時間的オブジェクトは、ISO以外の暦体系にすることができます。実装は、他の暦体系との互換性をドキュメント化したり、暦を問い合せる
ことによってISO以外の時間的オブジェクトを拒否したりすることもできます。
このメソッドは、複数のスレッドから並列に呼び出される可能性があります。呼び出されるときは、スレッドセーフである必要があります。
temporal
- 量が減算される時間的オブジェクト、nullでないDateTimeException
- 減算できない場合ArithmeticException
- 数値のオーバーフローが発生した場合 バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright© 1993, 2014, Oracle and/or its affiliates. All rights reserved.