2021-04-18 10:56  阅读(81)
文章分类:Java 基础教程 文章标签:JavaJava 教程
©  原文作者:w3cschool 原文地址:https://www.w3cschool.cn/java/java-class-instance.html

Java面向对象设计 - Java Objects类

Java在java.util包中有一个实用程序类Objects用于处理对象。

它由所有静态方法组成。 Objects类中的大多数方法都会优雅地处理空值。

以下是类中的方法列表。他们的描述遵循列表。

  • int compare(T a, T b, Comparator c)
    如果参数相同,则返回0,否则返回c.compare(a,b)。因此,如果两个参数都为null,则返回0。
  • boolean deepEquals(Object a, Object b)
    检查两个对象是否相等。如果两个参数都相等,则返回true。否则,它返回false。如果两个参数都为null,则返回true。
  • boolean equals(Object a, Object b)
    比较两个对象是否相等。如果两个参数相等,则返回true。否则,它返回false。如果两个参数都为null,则返回true。
  • int hash(Object... values)
    为所有指定的对象生成哈希码。它可以用于计算对象的哈希码,该哈希码基于多个实例字段。
  • int hashCode(Object o)
    返回指定对象的哈希码值。如果参数为null,则返回0。
  • boolean isNull(Object obj)
    如果指定的对象为null,isNull()方法返回true。否则,它返回false。您还可以使用比较运算符==检查对象是否为null,例如,obj == null返回obj的true为null。
  • boolean nonNull(Object obj)
    执行与isNull()方法相反的检查。
  • T requireNonNull(T obj)
    T requireNonNull(T obj, String message)
    T requireNonNull(T obj, Supplier messageSupplier)
    检查参数是否为null。如果参数为null,它会抛出一个NullPointerException异常。此方法设计用于验证方法和构造函数的参数。
    第二个版本可以指定当参数为null时抛出的NullPointerException的消息。
    第三个版本的方法将一个Supplier作为第二个参数。
  • String toString(Object o)
    String toString(Object o, String nullDefault)
    如果参数为null,则toString()方法返回一个“null”字符串。对于非空参数,它返回通过调用参数的toString()方法返回的值。

HashCode

下面的代码演示了如何使用来自Objects类的方法来计算哈希码。

    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);
    
      }
    }
    

上面的代码生成以下结果。

2021041810515_1.png

equals

以下代码显示了如何使用Objects类中的equals方法来比较两个对象。

    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);
      }
    }
    

上面的代码生成以下结果。

202104181059_2.png

toString

以下代码显示如何使用toString方法从对象将对象转换为字符串。

    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"));
      }
    }
    

上面的代码生成以下结果。

202104181057_3.png

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);
      }
    }
    

上面的代码生成以下结果。

202104181056_4.png

点赞(0)
版权归原创作者所有,任何形式转载请联系作者; Java 技术驿站 >> Java Objects类
上一篇
Java Immutable(不可变)对象
下一篇
Java 内部类