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

インタフェースTemporalQuery<R>

  • 型パラメータ:
    R - 問合せから返される型
    関数型インタフェース:
    これは関数型インタフェースなので、ラムダ式またはメソッド参照の代入先として使用できます。

    @FunctionalInterface
    public interface TemporalQuery<R>
    時間的オブジェクトを照会するための方針です。

    問合せは、時間的オブジェクトから情報を抽出するための主要なツールです。 それらは、戦略デザイン・パターンのように、問合せのプロセスを外部化して異なるアプローチを可能にするために存在します。 例として、日付がうるう年の2月29日の前日かどうかを確認する問合せや、次の誕生日までの日数を計算する問合せなどがあります。

    TemporalFieldインタフェースは、時間的オブジェクトを問い合せるもう1つのメカニズムを提供します。 そのインタフェースは、longを返すように制限されています。 これに対して、問合せは任意の型を返すことができます。

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

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

    もっとも一般的な実装は、LocalDate::fromZoneId::fromなどのメソッド参照です。 その他の共通の問合せは、TemporalQueries内のstaticメソッドとして提供されます。

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

      修飾子と型 メソッド 説明
      R queryFrom​(TemporalAccessor temporal)
      指定された時間的オブジェクトを問い合せます。
    • メソッドの詳細

      • queryFrom

        R queryFrom​(TemporalAccessor temporal)
        指定された時間的オブジェクトを問い合せます。

        これは、実装クラスにカプセル化されたロジックを使用して、指定された時間的オブジェクトを問い合せ、オブジェクトを返します。 例として、日付がうるう年の2月29日の前日かどうかを確認する問合せや、次の誕生日までの日数を計算する問合せなどがあります。

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

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

        実装要件:
        実装は、入力オブジェクトを取り、それを問い合せる必要があります。 実装は、問合せのロジックを定義し、そのロジックをドキュメント化します。 TemporalAccessor上の任意のメソッドを使用して、結果を決定できます。 入力オブジェクトは変更できません。

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

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

        パラメータ:
        temporal - 問い合せる時間的オブジェクト。null以外
        戻り値:
        問い合せた値。見つからなかったことを示すためにnullを返す場合がある
        例外:
        DateTimeException - 問合せできない場合
        ArithmeticException - 数値のオーバーフローが発生した場合