public final class Objects extends Object
static
用于对对象进行static
实用方法组成。
这些实用程序包括用于计算对象的哈希码的null
-safe或null
方法,为对象返回一个字符串,并比较两个对象。
Modifier and Type | Method and Description |
---|---|
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 参数,0为
null 参数。
|
static boolean |
isNull(Object obj)
返回
true 如果提供的引用是
null 否则返回
false 。
|
static boolean |
nonNull(Object obj)
退货
true 如果提供的参考是非
null 否则返回
false 。
|
static <T> T |
requireNonNull(T obj)
检查指定的对象引用不是
null 。
|
static <T> T |
requireNonNull(T obj, String message)
检查指定的对象引用不是 null 并抛出自定义的NullPointerException (如果是)。
|
static <T> T |
requireNonNull(T obj, Supplier<String> messageSupplier)
检查指定的对象引用不是 null 并抛出一个自定义的NullPointerException (如果是)。
|
static String |
toString(Object o)
返回非
null 参数调用
toString 和
"null" 参数的
"null" 的
null 。
|
static String |
toString(Object o, String nullDefault)
如果第一个参数不是
null ,则返回第一个参数调用
toString 的结果,
toString 返回第二个参数。
|
public static boolean equals(Object a, Object b)
true
如果参数相等,彼此false
其他。
因此,如果两个参数都是null
, true
返回null
,如果只有一个参数是null
,则返回false
。
否则,使用第一个参数的equals
方法确定相等性。
a
- 一个对象
b
- 与
a
进行比较的一个对象
true
如果参数彼此相等,
false
false
Object.equals(Object)
public static boolean deepEquals(Object a, Object b)
true
如果参数是深层相等,彼此false
其他。
两个null
值相当。
如果两个参数都是数组,则使用Arrays.deepEquals
中的算法来确定相等。
否则,通过使用第一个参数的equals
方法确定相等性。
a
- 一个对象
b
- 与
a
进行比较的对象,用于深度相等
true
如果参数彼此深度相等,
false
false
Arrays.deepEquals(Object[], Object[])
,
equals(Object, Object)
public static int hashCode(Object o)
null
参数,0为
null
参数。
o
- 一个对象
null
参数,0为
null
参数
Object.hashCode()
public static int hash(Object... values)
Arrays.hashCode(Object[])
进行哈希处理。
此方法是用于实现有用Object.hashCode()
在含有多个字段的对象。 例如,如果有三个字段,对象x
, y
和z
,一个可以这样写:
警告:当提供单个对象引用时,返回的值不等于该对象引用的哈希码。 该值可以通过调用@Override public int hashCode() { return Objects.hash(x, y, z); }
hashCode(Object)
来计算。
values
- 要散列的值
Arrays.hashCode(Object[])
,
List.hashCode()
public static String toString(Object o)
null
参数调用
toString
和一个
null
参数的
"null"
的
null
。
o
- 一个对象
toString
为非
null
参数和
"null"
为
null
参数的结果
Object.toString()
,
String.valueOf(Object)
public static String toString(Object o, String nullDefault)
null
,则返回第一个参数调用
toString
的结果,
toString
返回第二个参数。
o
- 一个对象
nullDefault
- 如果第一个参数是
null
,返回的字符串
toString
对第一个参数的结果,如果不是
null
,否则第二个参数。
toString(Object)
public static <T> int compare(T a, T b, Comparator<? super T> c)
c.compare(a, b)
其他。
因此,如果两个参数都为null
则返回0。
请注意,如果其中一个参数为null
,则NullPointerException
可能会或可能不会抛出,具体取决于Comparator
选择具有null
值的订购策略(如果有)。
T
- 正在比较的对象的类型
a
- 一个对象
b
- 要与
a
进行比较的对象
c
-
Comparator
比较前两个参数
c.compare(a, b)
0,否则为c.compare(a, b)。
Comparable
, Comparator
public static <T> T requireNonNull(T obj)
null
。
该方法主要用于在方法和构造函数中进行参数验证,如下所示:
public Foo(Bar bar) { this.bar = Objects.requireNonNull(bar); }
T
- 参考的类型
obj
- 检查无效的对象引用
obj
如果不是
null
NullPointerException
- 如果
obj
是
null
public static <T> T requireNonNull(T obj, String message)
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
- 检查无效的对象引用
message
- 在抛出
NullPointerException
的情况下使用的详细消息
obj
如果不是
null
NullPointerException
- 如果
obj
是
null
public static boolean isNull(Object obj)
true
如果提供的引用是
null
否则返回
false
。
public static boolean nonNull(Object obj)
true
如果提供的参考是非
null
否则返回
false
。
public static <T> T requireNonNull(T obj, Supplier<String> messageSupplier)
null
并抛出自定义的NullPointerException
(如果是)。
与方法requireNonNull(Object, String)
不同,该方法允许创建要延迟的消息,直到进行空检查为止。 虽然这可能会在非空情况下赋予性能优势,但在决定调用此方法时,应注意创建消息提供者的成本低于直接创建字符串消息的成本。
T
- 参考的类型
obj
- 检查无效的对象引用
messageSupplier
- 在发送
NullPointerException
的情况下使用的详细消息的供应商
obj
如果不是
null
NullPointerException
- 如果
obj
是
null
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.