Java Objects類

2018-01-18 17:40 更新

Java面向?qū)ο笤O(shè)計(jì) - Java Objects類


Java在java.util包中有一個(gè)實(shí)用程序類Objects用于處理對象。

它由所有靜態(tài)方法組成。 Objects類中的大多數(shù)方法都會(huì)優(yōu)雅地處理空值。

以下是類中的方法列表。他們的描述遵循列表。

  • int compare(T a, T b, Comparator c)
    如果參數(shù)相同,則返回0,否則返回c.compare(a,b)。因此,如果兩個(gè)參數(shù)都為null,則返回0。
  • boolean deepEquals(Object a, Object b)
    檢查兩個(gè)對象是否相等。如果兩個(gè)參數(shù)都相等,則返回true。否則,它返回false。如果兩個(gè)參數(shù)都為null,則返回true。
  • boolean equals(Object a, Object b)
    比較兩個(gè)對象是否相等。如果兩個(gè)參數(shù)相等,則返回true。否則,它返回false。如果兩個(gè)參數(shù)都為null,則返回true。
  • int hash(Object... values)
    為所有指定的對象生成哈希碼。它可以用于計(jì)算對象的哈希碼,該哈希碼基于多個(gè)實(shí)例字段。
  • int hashCode(Object o)
    返回指定對象的哈希碼值。如果參數(shù)為null,則返回0。
  • boolean isNull(Object obj)
    如果指定的對象為null,isNull()方法返回true。否則,它返回false。您還可以使用比較運(yùn)算符==檢查對象是否為null,例如,obj == null返回obj的true為null。
  • boolean nonNull(Object obj)
    執(zhí)行與isNull()方法相反的檢查。
  • T requireNonNull(T obj)
    T requireNonNull(T obj, String message)
    T requireNonNull(T obj, Supplier messageSupplier)
    檢查參數(shù)是否為null。如果參數(shù)為null,它會(huì)拋出一個(gè)NullPointerException異常。此方法設(shè)計(jì)用于驗(yàn)證方法和構(gòu)造函數(shù)的參數(shù)。
    第二個(gè)版本可以指定當(dāng)參數(shù)為null時(shí)拋出的NullPointerException的消息。
    第三個(gè)版本的方法將一個(gè)Supplier作為第二個(gè)參數(shù)。
  • String toString(Object o)
    String toString(Object o, String nullDefault)
    如果參數(shù)為null,則toString()方法返回一個(gè)“null”字符串。對于非空參數(shù),它返回通過調(diào)用參數(shù)的toString()方法返回的值。

HashCode

下面的代碼演示了如何使用來自O(shè)bjects類的方法來計(jì)算哈希碼。

import java.util.Objects;

public class Main {
  public static void main(String[] args) {
    // Compute hash code for two integers, a char, and a string
    int hash = Objects.hash(10, 800, "\u20b9", "Hello");
    System.out.println("Hash Code is " + hash);

  }
}

上面的代碼生成以下結(jié)果。


equals

以下代碼顯示了如何使用Objects類中的equals方法來比較兩個(gè)對象。

import java.util.Objects;

public class Main {
  public static void main(String[] args) {
    // Test for equality
    boolean isEqual = Objects.equals(null, null);
    System.out.println("null is  equal to null:  " + isEqual);

    isEqual = Objects.equals(null, "XYZ");
    System.out.println("null is  equal to XYZ: " + isEqual);
  }
}

上面的代碼生成以下結(jié)果。

toString

以下代碼顯示如何使用toString方法從對象將對象轉(zhuǎn)換為字符串。

import java.util.Objects;

public class Main {
  public static void main(String[] args) {
    // toString() method test
    System.out.println("toString(null) is  " + Objects.toString(null));
    System.out.println("toString(null, \"XXX\")  is "
        + Objects.toString(null, "XXX"));
  }
}

上面的代碼生成以下結(jié)果。

requireNonNull

以下代碼顯示如何使用Objects類中的requireNonNull。

import java.time.Instant;
import java.util.Objects;
import java.util.function.Supplier;

public class Main {
  public static void main(String[] args) {
    try {
      printName("A");
      printName(null);
    } catch (NullPointerException e) {
      System.out.println(e.getMessage());
    }
    try {
      Supplier<String> messageSupplier = () -> "Name is  required. Error generated on  "
          + Instant.now();
      printNameWithSuplier("asdf", messageSupplier);
      printNameWithSuplier(null, messageSupplier);
    } catch (NullPointerException e) {
      System.out.println(e.getMessage());
    }
  }

  public static void printName(String name) {
    Objects.requireNonNull(name, "Name is required.");
    System.out.println("Name is " + name);
  }

  public static void printNameWithSuplier(String name,
      Supplier<String> messageSupplier) {
    Objects.requireNonNull(name, messageSupplier);
  }
}

上面的代碼生成以下結(jié)果。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號