I'm using Lombok 1.18.8:
compileOnly 'org.projectlombok:lombok:1.18.8'
Here is my simple class with @Wither
:
@Wither
public class User {
private int a;
}
But withA()
method doesn't appear when I'm trying to call it in another class:
class test {
User user = new User().withA(1); // withA is red
}
What is wrong with my code?
UPD: Other Lombok annotations work. For example @Setter
, @Getter
, and @NoArgsConstructor
.
If you look at the actual implementation of withA()
you will notice that it relies on an all-args constructors. To make your example work, try to add it, as well as a no-arg constructor:
@Wither
@AllArgsConstructor
@NoArgsConstructor
public class User {
private int a;
}
The delombok'd version is:
public class User {
private int a;
public User withA(int a) {
return this.a == a ? this : new User(a);
}
public User(int a) {
this.a = a;
}
public User() {
}
}
Note: This has been tested with Lombok 1.18.8, IntelliJ IDEA and Lombok plugin.
@With
has been promoted and @Wither
deprecated:
Simply replace lombok.experimental.Wither
with lombok.With
. Everything else is similar to 1.18.8
:
@With
@AllArgsConstructor
@NoArgsConstructor
public class User {
private int a;
}