12

ご存知のとおり、これはObjectJavaのルートクラスです。Objectsに非常によく似た名前のクラスを見つけましたObject

TheisObjectsクラスはしばらくの間私を混乱させました。Objectsいつどこでクラスを使うべきか教えてもらえますか?

4

3 に答える 3

20

ObjectsObjectインスタンスと組み合わせて使用​​できるユーティリティメソッドのセットが含まれているだけです。インスタンス化することはできず(コンストラクターfinalはなく)、メソッドのみが含まれていることに注意してください。publicstatic

ユーティリティメソッドを複数形の名前クラスに配置する命名スキーマは、JDKではかなり一般的です。

  • Collections
  • Arrays(厳密に言えば、対応するArrayクラスはありませんが)
  • ..。

他のライブラリもこのスキームを使用します。たとえば、Guava

于 2012-11-28T08:58:15.920 に答える
1

クラスの典型的な使用法の1つObjects

public void foo(SomeClass bar) {
    Objects.requireNonNull(bar, "custom msg"); // // Ensure an object is not null.
}

barnullの場合の出力:

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を構築するもう1つ:

@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()などのインスタンスメソッドのみがあります。

オブジェクトクラス

オブジェクトクラスは最終クラスであり、オブジェクトを操作するための静的ユーティリティメソッドのみで構成されます。オブジェクトクラスメソッドを使用すると、オブジェクトのハッシュコードを計算し、オブジェクトの文字列を返すnullセーフメソッドであるため、NullPointerExceptionをスマートに処理できます。 、および2つのオブジェクトを比較します。このクラスは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 に答える