<dependency>
<groupId>org.immutables</groupId>
<artifactId>value</artifactId>
<version>2.8.8</version>
</dependency>
@Value.Immutable
public interface User {
String getName();
int getAge();
List<String> getInterests();
}
groovy
dependencies {
compileOnly 'org.immutables:value:2.8.8'
annotationProcessor 'org.immutables:value:2.8.8'
annotationProcessor 'org.immutables:builder:2.8.8'
}
User user1 = ImmutableUser.builder()
.name("Alice")
.age(25)
.interests(Arrays.asList("Java", "Reading"))
.build();
User user2 = ImmutableUser.builder()
.name("Bob")
.age(28)
.interests(Arrays.asList("Music", "Sports"))
.build();
@Value.Style(
visibility = ImplementationVisibility.PUBLIC,
builderVisibility = Value.Style.BuilderVisibility.PUBLIC,
get = {"is*", "get*"},
typeAbstract = {"Abstract*", "*IF"},
typeImmutable = "*Immutable",
build = "new"
)
public @interface ConfigStyle {}