Не могу создать класс Lombok внутри моего тестового класса: модификатор stati c здесь не разрешен - PullRequest
1 голос
/ 17 января 2020

Я хочу создать класс Lombok внутри тестового класса

@RunWith(SpringRunner.class)
@SpringBootTest
public class HostelIntegrationTest  {


    @Data
    @Builder
    @NoArgsConstructor
    @AllArgsConstructor
    @JsonInclude(NON_NULL)
    @EqualsAndHashCode
    class User {
        String property1;
        Instant property2;
        Integer property3;
    }

, но я получаю эту ошибку компиляции:

модификатор stati c здесь не разрешен

Ответы [ 2 ]

6 голосов
/ 17 января 2020

@Builder создает внутренний класс static. Возможно, проблема в внутреннем классе stati c внутри внутреннего класса non-stati c.

Попробуйте также сделать User * static

//other annotations
@Builder    
static class User {
    String property1;
    Instant property2;
    Integer property3;
}
3 голосов
/ 17 января 2020

Определение вашего внутреннего класса как static решит это.

Фон : каждый экземпляр внутреннего класса будет иметь ссылку на объект внешнего класса, который его создал, если внутренний класс не определен как stati c. Обычно вам не нужна эта ссылка, поэтому вы должны определить свои внутренние классы как stati c (это хорошая оценка c даже из PoV OOP в отличие от методов и полей stati c).

Lombok @Builder определит метод stati c в вашем внутреннем классе (builder()), который разрешен только в stati c внутренних классах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...