@SuperBuilder Lombok - ошибка java: не удается найти символ - PullRequest
1 голос
/ 07 января 2020

Я уже некоторое время использую Lombok с IntelliJ. Я установил новейший (v. 0.28) плагин Lombok, включил обработку аннотаций и добавил зависимость pombok (v. 1.18.10) в pom. xml. Все работало хорошо до сегодняшнего дня, когда я захотел реализовать экспериментальную @SuperBuilder.

У меня есть простая иерархия:

@SuperBuilder
public class User {
   private String a;
}

@SuperBuilder
public class Employee extends User {
   private int b;
}

@SuperBuilder
public class Employer extends User {
   private double c;
}

Я хотел установить поля из родительского класса в построителе ребенка, например:

Employee.builder().a("Positive").b(1).build();

Employer.builder().a("Negative").c(-2.1).build();

На первый взгляд все это работает - нет ошибок, отображаемых, когда файл открыт и сборщик исправен. Однако после mvn clean compile я получаю следующий результат в каждой строке @SuperBuilder (т.е. в каждом из этих 3 классов): Error:(20) java: cannot find symbol

Чего мне здесь не хватает? Я попытался обновить версию плагина Lombok и переустановить его, но безуспешно.

Ответы [ 2 ]

2 голосов
/ 03 февраля 2020

Я столкнулся с той же проблемой, и добавление @SuperBuilder ко всем "базовым" классам решило проблему.

Ранее:

abstract class Parent {
   ...
}

@SuperBuilder
class Child extends Parent {
   ...
}

После:

@SuperBuilder              // <- addded
abstract class Parent {
   ...
}

@SuperBuilder
class Child extends Parent {
   ...
}
1 голос
/ 08 января 2020

Хорошо, я нашел это. Я упустил из виду, что класс User расширяет базовый класс c, который расширяет каждый объект в нашем приложении. Это казалось настолько очевидным, и я не заметил ...

Во всяком случае, я узнал, только запустив mvn clean install в терминале - вывод был намного более подробным, чем в IntelliJ и указал на этот класс. После добавления аннотации @ SuperBuilder поверх нее компиляция прошла успешно.

...