モジュール java.base
パッケージ java.util

クラスObjects


  • public final class Objects
    extends Object
    このクラスは、オブジェクトを操作するためのstaticユーティリティ・メソッド、または操作の前に特定の条件をチェックすることで構成されます。 これらのユーティリティには、オブジェクトのハッシュ・コードを計算するためのnull-safeまたはnull-tolerantメソッド、1つのオブジェクトの文字列を戻し、2つのオブジェクトを比較し、索引またはサブ範囲の値が範囲外であるかどうかをチェックするための方法が含まれています。
    APIの注:
    checkIndex(int, int)checkFromToIndex(int, int, int)checkFromIndexSize(int, int, int)などの静的メソッドが用意されており、索引とサブ範囲に対応する値が範囲外であるかどうかを確認できます。 これらの静的メソッドのバリエーションでは、実行時例外および対応する例外詳細メッセージのカスタマイズがサポートされており、値が範囲外の場合にスローされます。 そのようなメソッドは、機能的なインタフェースの引数、つまり、BiFunctionのインスタンスを受け取り、バインドされていない値を実行時例外にマッピングします。 このようなメソッドを、ラムダ式、メソッド参照、または値を取得するクラスである引数と組み合わせて使用する場合は注意が必要です。 そのような場合、機能的インタフェースの割り当てに関連するキャプチャのコストは、境界をチェックするコストを超える可能性があります。
    導入されたバージョン:
    1.7
    • メソッドのサマリー

      修飾子と型 メソッド 説明
      static int checkFromIndexSize​(int fromIndex, int size, int length)
      fromIndex (inclusive)からfromIndex + size (exclusive)までのサブ・レンジが0 (inclusive)からlength (exclusive)までの範囲の範囲内にあるかどうかをチェックします。
      static int checkFromToIndex​(int fromIndex, int toIndex, int length)
      fromIndex (inclusive)からtoIndex (exclusive)までのサブ・レンジが0 (inclusive)からlength (exclusive)までの範囲の範囲内にあるかどうかをチェックします。
      static int checkIndex​(int index, int length)
      index0 (inclusive)からlength (exclusive)までの範囲の境界内にあるかどうかをチェックします。
      static <T> int compare​(T a, T b, Comparator<? super T> c)
      引数が一致する場合は0を返し、それ以外の場合は c.compare(a, b)を返します。
      static boolean deepEquals​(Object a, Object b)
      引数が相互に深層で等価である場合はtrueを返し、それ以外の場合はfalseを返します。
      static boolean equals​(Object a, Object b)
      引数が相互に等しい場合はtrueを返し、それ以外の場合はfalseを返します。
      static int hash​(Object... values)
      一連の入力値に対してハッシュ・コードを生成します。
      static int hashCode​(Object o)
      null以外の引数のハッシュ・コードを返し、引数がnullの場合は0を返します。
      static boolean isNull​(Object obj)
      指定された参照がnullである場合はtrueを返し、そうでない場合はfalseを返します。
      static boolean nonNull​(Object obj)
      指定された参照がnullでない場合はtrueを返し、そうでない場合はfalseを返します。
      static <T> T requireNonNull​(T obj)
      指定されたオブジェクト参照がnullでないことを確認します。
      static <T> T requireNonNull​(T obj, String message)
      指定されたオブジェクト参照がnullでないことを確認し、nullの場合はカスタマイズされたNullPointerExceptionをスローします。
      static <T> T requireNonNull​(T obj, Supplier<String> messageSupplier)
      指定されたオブジェクト参照がnullでないことを確認し、nullの場合はカスタマイズされたNullPointerExceptionをスローします。
      static <T> T requireNonNullElse​(T obj, T defaultObj)
      nullの場合は最初の引数を返し、それ以外の場合は非nullの第2引数を返します。
      static <T> T requireNonNullElseGet​(T obj, Supplier<? extends T> supplier)
      null以外の場合は最初の引数を返し、そうでなければsupplier.get()の非null値を返します。
      static String toString​(Object o)
      null引数に対してtoStringを呼び出し、null引数に"null"を呼び出した結果を返します。
      static String toString​(Object o, String nullDefault)
      最初の引数がnullでない場合はそれに対するtoStringの呼出し結果を返し、それ以外の場合は2番目の引数を返します。
    • メソッドの詳細

      • equals

        public static boolean equals​(Object a,
                                     Object b)
        引数が相互に等しい場合はtrueを返し、それ以外の場合はfalseを返します。 したがって、両方の引数がnullの場合はtrueが返され、1つの引数だけがnullの場合は falseが返されます。 それ以外の場合は、最初の引数のequalsメソッドを使用して等しいかどうかが判定されます。
        パラメータ:
        a - オブジェクト
        b - aと等しいかどうかを比較するオブジェクト
        戻り値:
        引数が相互に等しい場合はtrue、それ以外の場合はfalse
        関連項目:
        Object.equals(Object)
      • deepEquals

        public static boolean deepEquals​(Object a,
                                         Object b)
        引数が相互に深層で等価である場合はtrueを返し、それ以外の場合はfalseを返します。 2つのnull値は相互に深層で等価です。 両方の引数が配列の場合は、Arrays.deepEqualsのアルゴリズムを使用して等しいかどうかが判定されます。 それ以外の場合は、最初の引数のequalsメソッドを使用して等しいかどうかが判定されます。
        パラメータ:
        a - オブジェクト
        b - aと深層で等価であるかどうかを比較するオブジェクト
        戻り値:
        引数が相互に深層で等価である場合はtrue、それ以外の場合はfalse
        関連項目:
        Arrays.deepEquals(Object[], Object[]), equals(Object, Object)
      • hashCode

        public static int hashCode​(Object o)
        null以外の引数のハッシュ・コードを返し、引数がnullの場合は0を返します。
        パラメータ:
        o - オブジェクト
        戻り値:
        引数がnullでない場合はそのハッシュ・コード、引数がnullの場合は0
        関連項目:
        Object.hashCode()
      • hash

        public static int hash​(Object... values)
        一連の入力値に対してハッシュ・コードを生成します。 ハッシュ・コードの生成は、入力値が配列に格納され、その配列がArrays.hashCode(Object[])の呼出しでハッシュ化されたかのように処理されます。

        このメソッドは、複数のフィールドを含むオブジェクトにObject.hashCode()を実装する場合に役立ちます。 たとえば、オブジェクトに3つのフィールドx yzがある場合は、次のように記述できます。

         @Override public int hashCode() {
             return Objects.hash(x, y, z);
         }
         
        警告: 単一のオブジェクト参照が指定された場合、戻り値はそのオブジェクト参照のハッシュ・コードと同じではありません。 この値は、hashCode(Object)を呼び出すことで計算できます。

        パラメータ:
        values - ハッシュ化する値
        戻り値:
        一連の入力値のハッシュ値
        関連項目:
        Arrays.hashCode(Object[]), List.hashCode()
      • toString

        public static String toString​(Object o)
        null引数に対してtoStringを呼び出し、null引数に"null"を呼び出した結果を返します。
        パラメータ:
        o - オブジェクト
        戻り値:
        null引数の場合はtoStringを呼び出し、null引数の場合は"null"を呼び出した結果
        関連項目:
        Object.toString(), String.valueOf(Object)
      • toString

        public static String toString​(Object o,
                                      String nullDefault)
        最初の引数がnullでない場合はそれに対するtoStringの呼出し結果を返し、それ以外の場合は2番目の引数を返します。
        パラメータ:
        o - オブジェクト
        nullDefault - 最初の引数がnullの場合に返す文字列
        戻り値:
        最初の引数がnullでない場合はそれに対するtoStringの呼出し結果、それ以外の場合は2番目の引数。
        関連項目:
        toString(Object)
      • compare

        public static <T> int compare​(T a,
                                      T b,
                                      Comparator<? super T> c)
        引数が一致する場合は0を返し、それ以外の場合は c.compare(a, b)を返します。 したがって、両方の引数がnullの場合は0が返されます。

        引数の1つがnullのときは、 NullPointerExceptionがスローされる場合とそうでない場合があります。これは、Comparatornull値の順序付けポリシーが選択されていれば、そのポリシーによって決まります。

        型パラメータ:
        T - 比較されるオブジェクトの型
        パラメータ:
        a - オブジェクト
        b - aと比較されるオブジェクト
        c - 最初の2つの引数を比較するComparator
        戻り値:
        引数が一致する場合は0、それ以外の場合は c.compare(a, b)
        関連項目:
        Comparable, Comparator
      • requireNonNull

        public static <T> T requireNonNull​(T obj)
        指定されたオブジェクト参照がnullでないことを確認します。 このメソッドは、次に示すように、メソッドとコンストラクタでパラメータを検証することを主な目的として設計されています。
         public Foo(Bar bar) {
             this.bar = Objects.requireNonNull(bar);
         }
         
        型パラメータ:
        T - その参照の型
        パラメータ:
        obj - nullかどうかが判定されるオブジェクト参照
        戻り値:
        obj (nullでない場合)
        例外:
        NullPointerException - objnullである場合
      • requireNonNull

        public static <T> T requireNonNull​(T obj,
                                           String message)
        指定されたオブジェクト参照がnullでないことを確認し、nullの場合はカスタマイズされたNullPointerExceptionをスローします。 このメソッドは、次に示すように、パラメータが複数のメソッドとコンストラクタでパラメータを検証することを主な目的として設計されています。
         public Foo(Bar bar, Baz baz) {
             this.bar = Objects.requireNonNull(bar, "bar must not be null");
             this.baz = Objects.requireNonNull(baz, "baz must not be null");
         }
         
        型パラメータ:
        T - その参照の型
        パラメータ:
        obj - nullかどうかが判定されるオブジェクト参照
        message - NullPointerExceptionがスローされた場合に使用する詳細メッセージ
        戻り値:
        obj (nullでない場合)
        例外:
        NullPointerException - objnullである場合
      • isNull

        public static boolean isNull​(Object obj)
        指定された参照がnullである場合はtrueを返し、そうでない場合はfalseを返します。
        APIの注:
        このメソッドは、Predicate(filter(Objects::isNull))として使用するために存在します。
        パラメータ:
        obj - nullがチェックされる参照
        戻り値:
        指定された参照がnullの場合はtrue、それ以外の場合はfalse
        導入されたバージョン:
        1.8
        関連項目:
        Predicate
      • nonNull

        public static boolean nonNull​(Object obj)
        指定された参照がnullでない場合はtrueを返し、そうでない場合はfalseを返します。
        APIの注:
        このメソッドは、Predicate(filter(Objects::nonNull))として使用するために存在します。
        パラメータ:
        obj - nullがチェックされる参照
        戻り値:
        指定された参照がnull以外の場合はtrue、それ以外の場合はfalse
        導入されたバージョン:
        1.8
        関連項目:
        Predicate
      • requireNonNullElse

        public static <T> T requireNonNullElse​(T obj,
                                               T defaultObj)
        nullの場合は最初の引数を返し、それ以外の場合は非nullの第2引数を返します。
        型パラメータ:
        T - その参照の型
        パラメータ:
        obj - オブジェクト
        defaultObj - 最初の引数がnullかどうかを返す非nullオブジェクト
        戻り値:
        null以外の場合は最初の引数、それ以外の場合は2番目の引数null
        例外:
        NullPointerException - objがヌルで、defaultObjnullの場合
        導入されたバージョン:
        9
      • requireNonNullElseGet

        public static <T> T requireNonNullElseGet​(T obj,
                                                  Supplier<? extends T> supplier)
        null以外の場合は最初の引数を返し、そうでなければsupplier.get()の非null値を返します。
        型パラメータ:
        T - 最初の引数の型と戻り値の型
        パラメータ:
        obj - オブジェクト
        supplier - 最初の引数がnullならば、非nullオブジェクトの戻り値
        戻り値:
        nullでない場合は最初の引数、そうでない場合はsupplier.get()からの値です。
        例外:
        NullPointerException - objがヌルで、suppliernullまたはsupplier.get()のいずれかの値がnullの場合
        導入されたバージョン:
        9
      • requireNonNull

        public static <T> T requireNonNull​(T obj,
                                           Supplier<String> messageSupplier)
        指定されたオブジェクト参照がnullでないことを確認し、nullの場合はカスタマイズされたNullPointerExceptionをスローします。

        メソッドrequireNonNull(Object, String)とは異なり、このメソッドはnullチェックが行われる後までメッセージの作成を遅延できます。 これはnull以外の場合にパフォーマンスが向上する場合がありますが、このメソッドを呼び出すことを決定するときは、メッセージ・サプライヤを作成するコストが文字列メッセージを単に直接作成するコストよりも小さいことを考慮するようにしてください。

        型パラメータ:
        T - その参照の型
        パラメータ:
        obj - nullかどうかが判定されるオブジェクト参照
        messageSupplier - NullPointerExceptionがスローされる場合に使用される詳細メッセージのサプライヤ
        戻り値:
        obj (nullでない場合)
        例外:
        NullPointerException - objnullである場合
        導入されたバージョン:
        1.8
      • checkIndex

        public static int checkIndex​(int index,
                                     int length)
        index0 (inclusive)からlength (exclusive)までの範囲の境界内にあるかどうかをチェックします。

        次のいずれかの品質に当てはまる場合、indexは範囲外として定義されます。

        • index < 0
        • index >= length
        • length < 0は、前の不等式から暗示されています

        パラメータ:
        index - インデックス
        length - 範囲の上限(exclusive)
        戻り値:
        indexが範囲の範囲内にある場合
        例外:
        IndexOutOfBoundsException - indexが範囲外であるかどうか
        導入されたバージョン:
        9
      • checkFromToIndex

        public static int checkFromToIndex​(int fromIndex,
                                           int toIndex,
                                           int length)
        fromIndex (inclusive)からtoIndex (exclusive)までのサブ・レンジが0 (inclusive)からlength (exclusive)までの範囲の範囲内にあるかどうかをチェックします。

        次のいずれかの粒度がtrueの場合、そのサブ範囲は範囲外と定義されます。

        • fromIndex < 0
        • fromIndex > toIndex
        • toIndex > length
        • length < 0は、前の不等式から暗示されています

        パラメータ:
        fromIndex - サブレンジの下限(inclusive)
        toIndex - サブレンジの上限(exclusive)
        length - 範囲の上限(exclusive)を設定
        戻り値:
        fromIndex範囲の範囲内のサブレンジの場合
        例外:
        IndexOutOfBoundsException - サブ・レンジが範囲外かどうか
        導入されたバージョン:
        9
      • checkFromIndexSize

        public static int checkFromIndexSize​(int fromIndex,
                                             int size,
                                             int length)
        fromIndex (inclusive)からfromIndex + size (exclusive)までのサブ・レンジが0 (inclusive)からlength (exclusive)までの範囲の範囲内にあるかどうかをチェックします。

        次のいずれかの粒度がtrueの場合、そのサブ範囲は範囲外と定義されます。

        • fromIndex < 0
        • size < 0
        • fromIndex + size > length、整数オーバーフローを考慮
        • length < 0は、前の不等式から暗示されています

        パラメータ:
        fromIndex - サブインターバルの下限(inclusive)
        size - サブレンジのサイズ
        length - 範囲の上限(exclusive)
        戻り値:
        fromIndex範囲の範囲内のサブレンジの場合
        例外:
        IndexOutOfBoundsException - サブ・レンジが範囲外かどうか
        導入されたバージョン:
        9