自动生成的方法:Record类会自动生成默认的equals()、hashCode()和toString()等方法。equals()和hashCode()方法基于定义的字段进行比较,toString()方法提供了记录的简洁字符串表示形式。这些方法可以直接使用,并且在不同的记录对象之间进行比较时非常方便。
适用场景:Java Record适用于表示简单的数据结构,如DTO、领域对象或一些不可变的值对象。对于复杂的业务逻辑或需要特定行为的类,传统的类定义方式可能更适合。
record Person(String name, int age) { // 可以在record内部添加其他方法或构造函数 } public class Main { public static void main(String[] args) { Person person = new Person("John", 25); System.out.println(person.name()); // 访问name字段 System.out.println(person.age()); // 访问age字段 System.out.println(person); // 自动生成的toString()方法 Person person2 = new Person("John", 25); System.out.println(person.equals(person2)); // 自动生成的equals()方法 } }在上述代码中,我们通过定义一个Person记录类型来表示一个人的信息。我们可以轻松地访问记录中的属性,并使用自动生成的toString()和equals()方法。
public record Person(String name, int age) { public Person { if (age < 0) { throw new IllegalArgumentException("Age cannot be negative"); } } // 添加其他方法 public void greet() { System.out.println("Hello, my name is " + name + " and I am " + age + " years old."); } } public class Main { public static void main(String[] args) { Person person = new Person("John", 25); person.greet(); // 自定义的greet()方法 // 堆代码 duidaima.com // 尝试使用非法的年龄创建Person对象 try { Person invalidPerson = new Person("Alice", -30); } catch (IllegalArgumentException e) { System.out.println(e.getMessage()); } } }