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

クラスAbstractChronology

java.lang.Object
java.time.chrono.AbstractChronology
すべての実装されたインタフェース:
Comparable<Chronology>, Chronology
直系の既知のサブクラス:
HijrahChronology, IsoChronology, JapaneseChronology, MinguoChronology, ThaiBuddhistChronology

public abstract class AbstractChronology extends Object implements Chronology
日付の編成と識別に使用される暦体系の抽象実装。

メインの日付と時間APIはISO暦体系に基づいて構築されています。 暦(chronology)は背後で動作し、暦体系の一般概念を表します。

詳細についてはChronologyを参照してください。

実装要件:
このクラスはChronologyインタフェースから分離されているため、staticメソッドは継承されません。 Chronologyは直接実装できますが、代わりにこの抽象クラスを拡張することを強くお薦めします。

このクラスは、他のクラスが正常に動作するように、注意して実装する必要があります。 インスタンス化可能なすべての実装は、最終、不変、およびスレッドセーフである必要があります。 サブクラスは、可能であれば直列化可能にしてください。

導入されたバージョン:
1.8
  • コンストラクタの詳細

    • AbstractChronology

      protected AbstractChronology()
      インスタンスを作成します。
  • メソッドの詳細

    • resolveDate

      public ChronoLocalDate resolveDate(Map<TemporalField,​Long> fieldValues, ResolverStyle resolverStyle)
      解析されたChronoFieldの値を解析時の日付に解決します。

      ほとんどのTemporalField実装は、フィールド上の解決メソッドを使用して解決されます。 これに対し、ChronoFieldクラスは暦に関連する意味のみを持つフィールドを定義します。 そのため、ChronoField日付フィールドは、ここで特定の暦のコンテキストで解決されます。

      ChronoFieldインスタンスはこのメソッドによって解決され、サブクラスでオーバーライドできます。

      • EPOCH_DAY - 存在する場合、日付に変換され、他のすべての日付フィールドがこの日付に対して照合されます。
      • PROLEPTIC_MONTH - 存在する場合、YEARMONTH_OF_YEARに分割されます。 モードがstrictまたはsmartである場合、フィールドは検証されます。
      • YEAR_OF_ERAERA - 両方とも存在する場合、それらが組み合わされてYEARを形成します。 lenientモードではYEAR_OF_ERAの範囲は検証されず、smartおよびstrictモードでは検証されます。 ERAは3つすべてのモードで範囲が検証されます。 YEAR_OF_ERAのみが存在し、モードがsmartまたはlenientの場合、最後の使用可能な紀元と想定されます。 strictモードでは、紀元が想定されず、YEAR_OF_ERAはそのままの状態にされます。 ERAのみが存在する場合、それはそのままの状態にされます。
      • YEARMONTH_OF_YEARDAY_OF_MONTH - 3つすべてが存在する場合、それらが組み合わされて日付が形成されます。 3つすべてのモードで、YEARが検証されます。 モードがsmartまたはstrictの場合、月と日が検証されます。 モードがlenientの場合、要求された年の最初の月の最初の日で日付を作成し、次に月数での差、次に日数での差を加算する場合と等しい方法で、日付が組み合わされます。 モードがsmartで、「月の日」が年-月の最大より大きい場合、「月の日」は最後の「月の日」に調整されます。 モードがstrictの場合、3つのフィールドは有効な日付を形成している必要があります。
      • YEARDAY_OF_YEAR - 両方とも存在する場合、それらが組み合わされて日付が形成されます。 3つすべてのモードで、YEARが検証されます。 モードがlenientの場合、要求された年の最初の日で日付を作成し、次に日数での差を加算する場合と等しい方法で、日付が組み合わされます。 モードがsmartまたはstrictの場合、2つのフィールドは有効な日付を形成している必要があります。
      • YEARMONTH_OF_YEARALIGNED_WEEK_OF_MONTHALIGNED_DAY_OF_WEEK_IN_MONTH - 4つすべてが存在する場合、それらが組み合わされて日付が形成されます。 3つすべてのモードで、YEARが検証されます。 モードがlenientの場合、要求された年の最初の月の最初の日で日付を作成し、次に月数での差、次に週数での差、次に日数での差を加算する場合と等しい方法で、日付が組み合わされます。 モードがsmartまたはstrictの場合、4つすべてのフィールドがそれらの外側の範囲に対して検証されます。 次に、要求された年と月の最初の日で日付を作成し、次に週数と日数での量を加算して、それらの値に到達する場合と等しい方法で、日付が組み合わされます。 モードがstrictの場合、日付がさらに検証され、日と週の調整によって月が変更されていないかどうかがチェックされます。
      • YEARMONTH_OF_YEARALIGNED_WEEK_OF_MONTHDAY_OF_WEEK - 4つすべてが存在する場合、それらが組み合わされて日付が形成されます。 このアプローチは、ALIGNED_DAY_OF_WEEK_IN_MONTHの年、月、および週についての上記の説明と同じです。 年、月、および週が処理されると、曜日が次または同じ一致する曜日で調整されます。
      • YEARALIGNED_WEEK_OF_YEARALIGNED_DAY_OF_WEEK_IN_YEAR - 3つすべてが存在する場合、それらが組み合わされて日付が形成されます。 3つすべてのモードで、YEARが検証されます。 モードがlenientの場合、要求された年の最初の日で日付を作成し、次に週数での差、次に日数での差を加算する場合と等しい方法で、日付が組み合わされます。 モードがsmartまたはstrictの場合、3つすべてのフィールドがそれらの外側の範囲に対して検証されます。 次に、要求された年の最初の日で日付を作成し、次に週数と日数での量を加算して、それらの値に到達する場合と等しい方法で、日付が組み合わされます。 モードがstrictの場合、日付がさらに検証され、日と週の調整によって年が変更されていないかどうかがチェックされます。
      • YEARALIGNED_WEEK_OF_YEARDAY_OF_WEEK - 3つすべてが存在する場合、それらが組み合わされて日付が形成されます。 このアプローチは、ALIGNED_DAY_OF_WEEK_IN_YEARの年および週についての上記の説明と同じです。 年および週が処理されると、曜日が次または同じ一致する曜日で調整されます。

      デフォルト実装はほとんどの暦体系に適切です。 ChronoField.ERAなしでChronoField.YEAR_OF_ERAが見つかった場合、Chronology.eras()の最後の紀元が使用されます。 実装では、7日の週、最初の「月の日」の値が1、最初の「年の日」の値が1、最初の月と年が必ず存在するものと想定します。

      定義:
      インタフェースChronologyresolveDate
      パラメータ:
      fieldValues - フィールドと値のマップ、更新可能、null以外
      resolverStyle - 要求された解決のタイプ、null以外
      戻り値:
      解決された日付、日付を作成するための情報が不十分な場合はnull
      例外:
      DateTimeException - 一般に入力データの競合のため、日付を解決できない場合
    • compareTo

      public int compareTo(Chronology other)
      この暦を別の暦と比較します。

      最初に暦ID文字列、次にサブクラスに固有の任意の追加の情報による比較の順序。 Comparableに定義されているとおりに、「equalsと一致」しています。

      定義:
      インタフェースChronologycompareTo
      定義:
      インタフェースComparable<Chronology>compareTo
      実装要件:
      この実装は暦IDを比較します。 サブクラスはそれらが格納している追加の状態を比較する必要があります。
      パラメータ:
      other - 他の比較する暦、null以外
      戻り値:
      コンパレータ値、小さい場合は負、大きい場合は正
    • equals

      public boolean equals(Object obj)
      この暦が別の暦と等しいかどうかをチェックします。

      比較はオブジェクトの全体の状態に基づきます。

      定義:
      インタフェースChronologyequals
      オーバーライド:
      equals 、クラス:  Object
      実装要件:
      この実装は型をチェックし、compareTo(java.time.chrono.Chronology)を呼び出します。
      パラメータ:
      obj - チェックするオブジェクト、nullはfalseを返す
      戻り値:
      これが他の暦と等しい場合はtrue
      関連項目:
      Object.hashCode()HashMap
    • hashCode

      public int hashCode()
      この暦のハッシュ・コード。

      ハッシュ・コードはオブジェクトの全体の状態に基づかせてください。

      定義:
      インタフェースChronologyhashCode
      オーバーライド:
      hashCode 、クラス:  Object
      実装要件:
      この実装は暦IDとクラスに基づきます。 サブクラスはそれらが格納している追加の状態を追加してください。
      戻り値:
      適切なハッシュ・コード
      関連項目:
      Object.equals(java.lang.Object), System.identityHashCode(java.lang.Object)
    • toString

      public String toString()
      暦IDを使用して、この暦をStringとして出力します。
      定義:
      インタフェースChronologytoString
      オーバーライド:
      toString 、クラス:  Object
      戻り値:
      この暦の文字列表現、null以外