众所周知,Object
是Java中的根类。我发现一个名为的类Objects
看起来与Object
.
这门课Objects
让我困惑了一段时间。谁能告诉我我们应该在何时何地使用该Objects
课程?
类的一种典型用法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");
}
是的, Object 和 Objects类有很多区别
项目等级
类对象是类层次结构的根。每个类都有 Object 作为超类,这个类从JDK1.0开始可用
类声明:public class Object
包装:java.lang.Object
方法:它只有实例方法,如 clone()、equals(Object obj)、hashCode()、notify()、notifyAll()、toString()、wait() 等。
对象类
Objects 类是最终类,它仅包含用于操作对象的静态实用方法,使用 Objects 类方法,可以巧妙地处理 NullPointerException,因为这些是用于计算对象哈希码的 null 安全方法,返回对象的字符串,并比较两个对象。这个类从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(Object o),hashCode(Object o)等.
注意:如果你有 JDK1.7 那么你只能使用Objects类