添加依赖关系:
<dependency> <groupId>io.soabase.record-builder</groupId> <artifactId>record-builder-processor</artifactId> <version>${record.builder.version}</version> <scope>provided</scope> </dependency>
|
代码:
@recordbuilder public record Person(String firstname, String Lastnamei, nt age){}
Person p=Personbuilder.builder() .age(20) .firstname("Test") .lastname ("Test") .build();
|
背景
Java 16 虽然引入了记录,但它目前缺少一些通常在数据类中发现的重要功能:构建器和“with”er。这个项目是一个注释处理器,它创建:
- Java 记录的配套构建器类
- 添加“with”复制方法的接口
- 从接口模板生成 Java 记录的注解
记录生成器示例
@RecordBuilder public record NameAndAge(String name, int age){}
|
这将生成一个可以使用的构建器类:
// build from components NameAndAge n1 = NameAndAgeBuilder.builder().name(aName).age(anAge).build();
// generate a copy with a changed value NameAndAge n2 = NameAndAgeBuilder.builder(n1).age(newAge).build(); // name is the same as the name in n1
// pass to other methods to set components var builder = new NameAndAgeBuilder(); setName(builder); setAge(builder); NameAndAge n3 = builder.build();
// use the generated static constructor/builder import static NameAndAgeBuilder.NameAndAge; ... var n4 = NameAndAge("hey", 42);
|
“with”复制方法的接口
如下代码:
@RecordBuilder public record NameAndAge(String name, int age) implements NameAndAgeBuilder.With {}
|
记录接口示例
@RecordInterface public interface NameAndAge { String name(); int age(); }
|