我希望避免一些样板代码。我看到jdk14有记录,如下面的示例所示。
https://www.logicbig.com/tutorials/core-java-tutorial/java-14-changes/records.html
如何在jdk11中执行类似于记录的操作?
发布于 2020-04-23 11:37:53
我强烈推荐Project Lombok (这里是https://projectlombok.org/)。从您列出的示例中
public record Person(String name, String gender, int age) {}这可以通过Lombok完成,如下所示
import lombox.Data
@Data
public class Person() {
private String name;
private String gender;
private int age;
}Lombox创建了getter和setter、toString、hashCode和一个默认构造函数,以及一个包含所有orgs的构造函数。
更新:评论中指出记录是不可变的。使用lombok可以通过几种方式轻松实现这一点。选项1:
import lombox.Data
@Data
public class Person() {
private final String name;
private final String gender;
private final int age;
}这将再次添加所需的-args构造函数。由于相对明显的原因,@Data不会为final字段创建setter。
选项2更明确一点:
import lombok.*;
@RequiredArgsConstructor
@EqualsAndHashCode
@Getter
public class Person() {
private String name;
private String gender;
private int age;
}发布于 2020-04-23 11:29:05
您可以使用代码生成。它不像Java 14那样简洁,但总比没有强。AutoValue是相当神奇的。
import com.google.auto.value.AutoValue;
@AutoValue
abstract class Animal {
static Animal create(String name, int numberOfLegs) {
return new AutoValue_Animal(name, numberOfLegs);
}
abstract String name();
abstract int numberOfLegs();
}https://stackoverflow.com/questions/61378827
复制相似问题