您好,欢迎访问一九零五行业门户网

如何在Java 14中使用Records类自动生成equals()和hashCode()方法

如何在java 14中使用records类自动生成equals()和hashcode()方法
在java编程中,我们经常需要为我们的类编写equals()和hashcode()方法。这两个方法在处理对象的相等性和哈希码时非常重要。为了简化这个过程,java 14引入了一个新的records类。records类提供了一种简化编写equals()和hashcode()方法的方式,可以自动根据类的成员变量生成这两个方法的实现。本文将介绍如何在java 14中使用records类来自动生成equals()和hashcode()方法。
首先,让我们来看一个简单的例子。假设我们有一个名为person的类,它有两个成员变量:name和age。我们希望能够比较两个person对象的相等性和生成它们的哈希码。
在java 14之前,我们要手动编写equals()和hashcode()方法,如下所示:
public class person { private string name; private int age; public person(string name, int age) { this.name = name; this.age = age; } public string getname() { return name; } public int getage() { return age; } @override public boolean equals(object obj) { if (this == obj) { return true; } if (obj == null || getclass() != obj.getclass()) { return false; } person person = (person) obj; return age == person.age && objects.equals(name, person.name); } @override public int hashcode() { return objects.hash(name, age); }}
上面的代码实现了person类的equals()和hashcode()方法,但是需要手动编写逻辑来比较成员变量的相等性和生成哈希码。
现在,让我们使用records类来简化这个过程。我们可以直接使用records关键字来定义一个类,并指定它的成员变量。然后,records类将自动为我们生成equals()和hashcode()方法的实现。在这种情况下,我们可以使用下面的代码来定义person类:
public record person(string name, int age) {}
是的,就是这么简单!只需一行代码,我们就定义了一个records类,并自动得到了equals()和hashcode()方法的实现。
现在,让我们来验证一下:
public class main { public static void main(string[] args) { person person1 = new person("alice", 25); person person2 = new person("alice", 25); person person3 = new person("bob", 30); system.out.println(person1.equals(person2)); // 输出:true system.out.println(person1.equals(person3)); // 输出:false system.out.println(person1.hashcode()); // 输出:2035395 system.out.println(person2.hashcode()); // 输出:2035395 system.out.println(person3.hashcode()); // 输出:66181377 }}
正如我们所看到的,通过使用records类,我们可以轻松地比较两个person对象的相等性,并生成它们的哈希码。person类的equals()方法会自动比较name和age两个成员变量的相等性,而hashcode()方法会自动根据name和age生成哈希码。
此外,records类还提供了构造函数,我们可以使用它来实例化对象,并通过成员变量的方式访问它们的值。例如,我们可以通过person.name和person.age来访问一个person对象的name和age。
总结一下,在java 14中使用records类来自动生成equals()和hashcode()方法是一个非常简单和便捷的方式。我们只需用一行代码定义一个records类,然后就可以轻松地比较对象的相等性和生成哈希码。这种自动生成的方式极大地简化了代码的编写,提高了开发效率。正因为如此,records类成为了java 14中一个非常有用的特性。
以上就是如何在java 14中使用records类自动生成equals()和hashcode()方法的详细内容。
其它类似信息

推荐信息