рд▓реЛрдореНрдмреЛрдХ 1.18.2 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ред рдирд┐рдореНрди рд╡рд░реНрдЧ рдЬрд╛рд╡рд╛ 8 рдХреЗ рд╕рд╛рде рд╕рдВрдХрд▓рд┐рдд рдХрд░рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдЬрд╛рд╡рд╛ 9 рдХреЗ рд╕рд╛рде рдирд╣реАрдВ:
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.Objects;
import java.util.Optional;
import lombok.Builder;
import lombok.Value;
public class TestLombok {
<strong i="6">@Value</strong>
<strong i="7">@Builder</strong>
static class MyClass {
private final int dayOfWeek;
static class MyClassBuilder {
private Optional<LocalDate> date = Optional.empty();
MyClassBuilder dayOfWeek(int date) {
if (!this.date.isPresent()) {
this.date = Optional.of(LocalDate.parse(String.valueOf(date),
DateTimeFormatter.ofPattern("yyyyMMdd") // doesn't compile
// DateTimeFormatter.BASIC_ISO_DATE // compiles
));
}
this.dayOfWeek = this.date.get().getDayOfWeek().getValue();
return this;
}
}
}
public static void main(String[] args) {
System.out.println(MyClass.builder().dayOfWeek(20181013).build());
}
}
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рддреНрд░реБрдЯрд┐ рдЖрдЙрдЯрдкреБрдЯ рд╣реИ:
TestLombok.java:11: error: incompatible types: String cannot be converted to DateTimeFormatter
<strong i="11">@Builder</strong>
^
рдпрджрд┐ DateTimeFormatter.ofPattern("yyyyMMdd")
рд▓рд╛рдЗрди рдХреЛ DateTimeFormatter.BASIC_ISO_DATE
рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдХреЛрдб рдареАрдХ рд╕реЗ рд╕рдВрдХрд▓рд┐рдд рд╣реЛрддрд╛ рд╣реИ (рднрд▓реЗ рд╣реА рджреЛрдиреЛрдВ рд╡рд┐рдзрд┐рдпрд╛рдВ рдПрдХ рд╣реА рдкреНрд░рдХрд╛рд░ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░ рджреЗрдВ)ред
рдореИрдВ рдПрдХ рдиреНрдпреВрдирддрдо рдЧреНрд░реЗрдбрд▓ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕рдВрд▓рдЧреНрди рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдЬреЛ рд╕рд┐рд░реНрдл рдЗрд╕ рдлрд╛рдЗрд▓ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рддрд╛ рд╣реИред рддреНрд░реБрдЯрд┐ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП gradle build
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдХрд╛рд░рдг рдХреНрдпрд╛ рд╣реИред рдореИрдВ рдЗрд╕реЗ рдкреБрди: рдкреЗрд╢ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред
рдореЗрд░рд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ рдЖрдк рдЕрдкрдиреЗ рдХреЛрдб рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░реЗрдВ рдФрд░ рдлрд╝реЙрд░реНрдореЗрдЯрд░ рдХреЛ рд╕реНрдерд╛рдиреАрдп рдЪрд░ (рдпрд╛ рд╕реНрдерд┐рд░ рдЕрдВрддрд┐рдо рдлрд╝реАрд▓реНрдб) рдореЗрдВ рдЕрд╕рд╛рдЗрди рдХрд░реЗрдВред рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдХреЗ рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЦреНрдпрд╛рд▓ рд░рдЦрддрд╛ рд╣реИред
рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдмрдВрдж рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рднрд▓реЗ рд╣реА рдПрдХ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдЕрдЬреНрдЮрд╛рдд рдмрдЧ рд╣реЛред рд╕рдорд╛рди рдмрдЧ рдХрд╛ рдкреАрдЫрд╛ рдХрд░рдиреЗ рдХреЗ рд╣рдорд╛рд░реЗ рдЕрдиреБрднрд╡ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдЗрд╕реЗ рдЦреЛрдЬрдиреЗ рдореЗрдВ рд╕рдкреНрддрд╛рд╣ рд▓рдЧ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдпрд╣ рд╕рд╛рдорд╛рдиреНрдп рдЙрдкрдпреЛрдЧ рдХрд╛ рдорд╛рдорд▓рд╛ рдирд╣реАрдВ рд╣реИред
рд╣рдордиреЗ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдХреНрдпреЛрдВ рдмрдВрдж рдХрд┐рдпрд╛
рдореЗрд░реЗ рдкрд╛рд╕ рдЗрд╕реА рддрд░рд╣ рдХреА рд╕рдорд╕реНрдпрд╛ рдереА, рдЬрдм @JsonCreator рдФрд░ @JsonProperty рдХрд╛ рдЙрдкрдпреЛрдЧ @Builder рдПрдиреЛрдЯреЗрд╢рди рдХреЗ рд╕рд╛рде рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдкрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛,
@JsonProperty рдХреЗ рд╕рд╛рде рдПрдиреЛрдЯреЗрдЯ рдХрд┐рдП рдЧрдП рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ рдлрд╝реАрд▓реНрдб рдирд╛рдореЛрдВ рдХрд╛ рдХреНрд░рдо рдХрдХреНрд╖рд╛ рдореЗрдВ рдШреЛрд╖рд┐рдд рдХреЗ рд╕рдорд╛рди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЖрдкрдХреА рд╕рдорд╕реНрдпрд╛ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ рдпрд╛ рдирд╣реАрдВ
<strong i="11">@Getter</strong>
<strong i="12">@ToString</strong>
<strong i="13">@Builder</strong>
<strong i="14">@JsonDeserialize</strong>
<strong i="15">@EqualsAndHashCode</strong>
public class DataClass {
private final long id;
private final String name;
private final String date;
// Order of this constructor parameters needs to be in the same order as declared in class, not sure why?
<strong i="16">@JsonCreator</strong>
public ClearingFlowCounts(@JsonProperty("name") String name,
@JsonProperty("id") long id, @JsonProperty("date") String date) {
this.id = id;
this.name = name;
this.date = date;
}
}
@blackuprise рдХреЗ рдкреБрди: рдкреЗрд╢ рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдФрд░ рд╕рдорд╛рдзрд╛рди рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдореЗрд░реЗ рдкрд╛рд╕ рдЗрд╕реА рддрд░рд╣ рдХреА рд╕рдорд╕реНрдпрд╛ рдереА, рдЬрдм @JsonCreator рдФрд░ @JsonProperty рдХрд╛ рдЙрдкрдпреЛрдЧ @Builder рдПрдиреЛрдЯреЗрд╢рди рдХреЗ рд╕рд╛рде рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдкрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛,
@JsonProperty рдХреЗ рд╕рд╛рде рдПрдиреЛрдЯреЗрдЯ рдХрд┐рдП рдЧрдП рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ рдлрд╝реАрд▓реНрдб рдирд╛рдореЛрдВ рдХрд╛ рдХреНрд░рдо рдХрдХреНрд╖рд╛ рдореЗрдВ рдШреЛрд╖рд┐рдд рдХреЗ рд╕рдорд╛рди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЖрдкрдХреА рд╕рдорд╕реНрдпрд╛ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ рдпрд╛ рдирд╣реАрдВ