モジュール java.base
パッケージ java.time.temporal

インタフェースTemporal

すべてのスーパー・インタフェース:
TemporalAccessor
既知のすべてのサブインタフェース:
ChronoLocalDate, ChronoLocalDateTime<D>, ChronoZonedDateTime<D>
既知のすべての実装クラス:
HijrahDate, Instant, JapaneseDate, LocalDate, LocalDateTime, LocalTime, MinguoDate, OffsetDateTime, OffsetTime, ThaiBuddhistDate, Year, YearMonth, ZonedDateTime

public interface Temporal extends TemporalAccessor
時間的オブジェクト(日付、時間、オフセット、またはそれらのなんらかの組合せなど)への読取り/書込みアクセスを定義するフレームワークレベルのインタフェースです。

これは、plusとminusを使用して操作できる完全な日付、時間およびオフセット・オブジェクトのベース・インタフェース型です。 これは、情報をフィールドまたは問合せとして提供および操作できるクラスによって実装されます。 このインタフェースの読取り専用バージョンについては、TemporalAccessorを参照してください。

ほとんどの日時情報は、数値として表されます。 これらは、大きな値を処理するためにlongで数値を保持するTemporalFieldを使用してモデル化されています。 年、月および「月の日」はフィールドの簡単な例ですが、これらにはインスタントとオフセットも含まれています。 フィールドの標準セットについては、ChronoFieldを参照してください。

日付/時間情報の2つの部分(chronologyおよびtime-zone)を数値で表すことはできません。 これらには、TemporalQueryで定義されるstaticメソッドを使用する問合せを介してアクセスできます。

このインタフェースはフレームワークレベルのインタフェースであり、アプリケーション・コードで広範囲にわたって使用しないようにしてください。 かわりに、LocalDateなどの具象型のインスタンスを作成して使い回してください。 これには様々な理由がありますが、その1つはこのインタフェースの実装がISO以外の暦体系になっている可能性があることです。 この問題の詳細は、ChronoLocalDateを参照してください。

実装するケース

3つの条件を満たすクラスでは、このインタフェースを実装する必要があります。

  • TemporalAccessorのように、日付/時間/オフセット情報へのアクセスを提供する
  • フィールドのセットが最大から最小まで連続している
  • フィールドのセットが完全であるため、他のフィールドを使用しなくても、表現されるフィールドの値の有効範囲を定義できる

これを、4つの例で説明します。

  • LocalDateは、日から永遠まで連続し、外部情報がなくても各日付の有効性を判定できるフィールドのセットを表すため、このインタフェースを実装します。 したがって、plus/minusを正しく実装できます。
  • LocalTimeは、ナノ秒から日まで連続し、外部情報がなくても有効性を判定できるフィールドのセットを表すため、このインタフェースを実装します。 したがって、日を折り返すことにより、plus/minusを正しく実装できます。
  • MonthDay(月と「月の日」の組合せ)は、このインタフェースを実装しません。 この組合せは、年内の日から月まで連続していますが、「月の日」の値の有効範囲を定義するのに十分な情報を備えていません。 したがって、plus/minusを正しく実装できません。
  • 曜日と「月の日」の組合せ(「13日の金曜日」)は、このインタフェースを実装できません。 これは、週に対する日と月に対する日が重複しているため、連続したフィールドのセットを表していません。

実装要件:
このインタフェースは実装が可変であることを制限しませんが、不変にすることを強くお薦めします。 すべての実装はComparableである必要があります。
導入されたバージョン:
1.8