12

众所周知,Object是Java中的根类。我发现一个名为的类Objects看起来与Object.

这门课Objects让我困惑了一段时间。谁能告诉我我们应该在何时何地使用该Objects课程?

4

3 回答 3

20

Objects只包含一组与Object实例结合使用的实用方法。请注意,它不能被实例化(它final没有public构造函数)并且只包含static方法。

将实用程序方法放在复数名称类中的命名模式在 JDK 中很常见:

其他库也使用此方案,例如Guava

于 2012-11-28T08:58:15.920 回答
1

类的一种典型用法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");
}
于 2016-06-21T10:57:14.067 回答
1

是的, 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

于 2019-02-08T08:05:56.210 回答