众所周知,Object
是Java中的根类。我找到了一个名为Objects
的类,它与Object
非常相似。
Theis Objects
课让我困惑了一段时间。谁能告诉我何时何地应该使用Objects
课程?
答案 0 :(得分:18)
Objects
只包含一组与Object
实例结合使用的实用程序方法。请注意,它无法实例化(它是final
并且没有public
构造函数)并且只包含static
方法。
将实用程序方法放在多名称类中的命名方案在JDK中很常见:
Collections
Arrays
(虽然严格来说没有相应的Array
类)其他库也使用此方案,例如Guava:
答案 1 :(得分:0)
Objects
类的一个典型用法:
public void foo(SomeClass bar) {
Objects.requireNonNull(bar, "custom msg"); // // Ensure an object is not null.
}
bar
为空时的输出:
Exception in thread "main" java.lang.NullPointerException: custom msg
at java.util.Objects.requireNonNull(Unknown Source)
at com.example.ObjectsUsage.main(ObjectsUsage.java:24)
另一个从字段构造hashCode:
@Override public int hashCode() {
return Objects.hash(this.foo, this.bar, this.duh);
}
最有用的一个:
if (Objects.equals(sun, moon)) {
log("I swear I am in earth");
}
答案 2 :(得分:0)
是的,对象和对象类两者之间有很多区别
对象类
Class Object是类层次结构的根。每个类都有Object作为超类,并且该类自 JDK1.0
开始可用 类声明:public class Object
包装:java.lang.Object
方法:它只有实例方法,例如clone(),equals(Object obj),hashCode(),notify(),notifyAll(),toString(),wait()等。< / p>
对象类
Objects类是最终类,它仅包含用于对对象进行操作的静态实用程序方法,使用Objects类方法,可以聪明地处理NullPointerException,因为这些是用于计算对象的哈希码并返回字符串的空安全方法一个对象,并比较两个对象。自 JDK1.7
开始提供此类 类声明:public final class Objects extends Object
包装:java.util.Objects
方法:它仅具有静态方法,包括equals(Object a,Object b),hash(Object ... values),isNull(Object obj),nonNull(Object obj),toString(对象o),hashCode(对象o)等。
注意:如果您拥有JDK1.7,则只能使用 Objects 类