Questions tagged «java-record»

2
定义记录的默认构造函数
我有一条记录,想要向其添加默认构造函数。 public record Record(int recordId) { public Record{ } } 但是它创建了带有int参数的构造函数。 public final class Record extends java.lang.Record{ private final int recordId; public Record(int); //other method } 我们如何向记录添加默认构造函数?

1
如何记录Java Record参数?
应该如何记录Java Record参数?我指的是最终成为构造函数参数的参数,类字段。 我试过了: /** * @param name the name of the animal * @param age the age of the animal */ public record Animal(String name, int age) { } 但是IntelliJ IDEA将@params 标记为错误。我找不到有关此方法工作原理的在线示例。我找到的最接近的讨论是https://bugs.openjdk.java.net/browse/JDK-8225055。 我在JDK中发现了一些单元 测试,似乎暗示这应该可行。也许这是一个IDE错误? 我正在使用OpenJDK 14 + 36-1461,IDEA 2020.1。 为了防止万一,我针对IDEA 提交了错误报告。

3
Java 14记录和数组
给出以下代码: public static void main(String[] args) { record Foo(int[] ints){} var ints = new int[]{1, 2}; var foo = new Foo(ints); System.out.println(foo); // Foo[ints=[I@6433a2] System.out.println(new Foo(new int[]{1,2}).equals(new Foo(new int[]{1,2}))); // false System.out.println(new Foo(ints).equals(new Foo(ints))); //true System.out.println(foo.equals(foo)); // true } 看来,很明显,该阵列的toString,equals方法是使用(而不是静态方法,Arrays::equals,Arrays::deepEquals 或Array::toString)。 所以我想Java 14 Records(JEP 359)在数组上不能很好地工作,相应的方法必须由IDE生成(至少在IntelliJ中,默认情况下会生成“有用的”方法,即它们使用静态方法)在Arrays)。 还是有其他解决方案?

3
龙目岛(Lombok)Getter / Setter vs Java 14记录
我喜欢Lombok项目,但如今,我正在阅读并尝试Java 14的一些新功能。 在新功能内部,有record关键字,该关键字允许创建具有以下内置功能的类:构造函数,私有最终字段,访问器,equals / hashCode,getter和toString方法。 现在我的问题是:最好依靠Lombok的功能,还是我们应该开始使用记录功能: 最好使用这个: record Person (String name, String surname) {} 或者那个: @AllArgsConstructor @ToString @EqualsAndHashCode public class GetterSetterExample { @Getter private int name; @Getter private int surname; } 两种方法的优缺点是什么?
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.