- java.lang.Object
-
- 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)
index
が0
(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
、y
、z
がある場合は、次のように記述できます。
警告: 単一のオブジェクト参照が指定された場合、戻り値はそのオブジェクト参照のハッシュ・コードと同じではありません。 この値は、@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
がスローされる場合とそうでない場合があります。これは、Comparator
でnull
値の順序付けポリシーが選択されていれば、そのポリシーによって決まります。- 型パラメータ:
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
-obj
がnull
である場合
-
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
-obj
がnull
である場合
-
isNull
public static boolean isNull(Object obj)
指定された参照がnull
である場合はtrue
を返し、そうでない場合はfalse
を返します。
-
nonNull
public static boolean nonNull(Object obj)
指定された参照がnull
でない場合はtrue
を返し、そうでない場合はfalse
を返します。
-
requireNonNullElse
public static <T> T requireNonNullElse(T obj, T defaultObj)
非null
の場合は最初の引数を返し、それ以外の場合は非null
の第2引数を返します。- 型パラメータ:
T
- その参照の型- パラメータ:
obj
- オブジェクトdefaultObj
- 最初の引数がnull
かどうかを返す非null
オブジェクト- 戻り値:
null
以外の場合は最初の引数、それ以外の場合は2番目の引数null
- 例外:
NullPointerException
-obj
がヌルで、defaultObj
がnull
の場合- 導入されたバージョン:
- 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
がヌルで、supplier
がnull
または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
-obj
がnull
である場合- 導入されたバージョン:
- 1.8
-
checkIndex
public static int checkIndex(int index, int length)
index
が0
(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
-
-