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

インタフェースTemporalAdjuster

  • 既知のすべてのサブインタフェース:
    ChronoLocalDate, ChronoLocalDateTime<D>, Era
    既知のすべての実装クラス:
    DayOfWeek, HijrahDate, HijrahEra, Instant, IsoEra, JapaneseDate, JapaneseEra, LocalDate, LocalDateTime, LocalTime, MinguoDate, MinguoEra, Month, MonthDay, OffsetDateTime, OffsetTime, ThaiBuddhistDate, ThaiBuddhistEra, Year, YearMonth, ZoneOffset
    関数型インタフェース:
    これは関数型インタフェースなので、ラムダ式またはメソッド参照の代入先として使用できます。

    @FunctionalInterface
    public interface TemporalAdjuster
    時間的オブジェクトを調整するための方針です。

    アジャスタは、時間的オブジェクトを変更するための主要なツールです。 それらは、戦略デザイン・パターンのように、調整のプロセスを外部化して異なるアプローチを可能にするために存在します。 例として、週末を避けて日付を設定するアジャスタや、日付を月の最後の日に設定するアジャスタなどがあります。

    TemporalAdjusterには、2つの同等な使用方法があります。 1つ目は、このインタフェース上でメソッドを直接呼び出す方法です。 2つ目は、Temporal.with(TemporalAdjuster)を使用する方法です。

       // these two lines are equivalent, but the second approach is recommended
       temporal = thisAdjuster.adjustInto(temporal);
       temporal = temporal.with(thisAdjuster);
     
    コード内での読みやすさが大幅に向上するため、2つ目のアプローチ(with(TemporalAdjuster))を使用することをお薦めします。

    TemporalAdjustersクラスには、staticメソッドとして使用できるアジャスタの標準セットが含まれています。 これらの機能を次に示します。

    • 月の最初または最後の日を見つける
    • 翌月の最初の日を見つける
    • その年の最初または最後の日を見つける
    • 翌年の最初の日を見つける
    • 月内の最初または最後の曜日(「6月の最初の水曜日」など)を見つける
    • 次または前の曜日(「次の木曜日」など)を見つける

    実装要件:
    このインタフェースは実装が可変であることを制限しませんが、不変にすることを強くお薦めします。
    導入されたバージョン:
    1.8
    関連項目:
    TemporalAdjusters
    • メソッドの詳細

      • adjustInto

        Temporal adjustInto​(Temporal temporal)
        指定された時間的オブジェクトを調整します。

        これは、実装クラスにカプセル化されたロジックを使用して、指定された時間的オブジェクトを調整します。 例として、週末を避けて日付を設定するアジャスタや、日付を月の最後の日に設定するアジャスタなどがあります。

        このメソッドを使用する等価な方法が2つあります。 1つ目はこのメソッドを直接呼び出すことです。 2つ目は、Temporal.with(TemporalAdjuster)を使用する方法です。

           // these two lines are equivalent, but the second approach is recommended
           temporal = thisAdjuster.adjustInto(temporal);
           temporal = temporal.with(thisAdjuster);
         
        コード内での読みやすさが大幅に向上するため、2つ目のアプローチ(with(TemporalAdjuster))を使用することをお薦めします。

        実装要件:
        実装は、入力オブジェクトを取り、それを調整する必要があります。 実装は、調整のロジックを定義し、そのロジックをドキュメント化します。 Temporal上の任意のメソッドを使用して時間的オブジェクトを問い合せ、調整を実行できます。 返されるオブジェクトは、入力オブジェクトと同じ識別可能な型を持つ必要があります。

        入力オブジェクトは変更できません。 かわりに、元のオブジェクトの調整済のコピーを返す必要があります。 これは、不変および可変の時間的オブジェクトに対して同等の安全な動作を提供します。

        入力の時間的オブジェクトは、ISO以外の暦体系にすることができます。 実装は、他の暦体系との互換性をドキュメント化したり、暦を問い合せることによってISO以外の時間的オブジェクトを拒否したりすることもできます。

        このメソッドは、複数のスレッドから並列に呼び出される可能性があります。 呼び出されるときは、スレッドセーフである必要があります。

        パラメータ:
        temporal - 調整する時間的オブジェクト。null以外
        戻り値:
        調整を行った同じ識別可能な型のオブジェクト、nullでない
        例外:
        DateTimeException - 調整を実行できない場合
        ArithmeticException - 数値のオーバーフローが発生した場合