Lombok - процессор аннотаций. Они запускаются на каждом модуле компиляции (то есть файле Java) и не имеют доступа к информации из других модулей компиляции. Это значит, что Lombok не может ничего знать о содержимом класса Parent
при обработке Child
.
Таким образом, при генерации кода для Child
Ломбок не знает, какие методы унаследованы от Parent
. Следовательно, он не может сгенерировать реализацию для абстрактного withA()
из Parent
.
Вторая проблема заключается в том, что для методов, требующих засухи, необходим конструктор, в котором все поля имеют параметры, включая поля из суперкласса. Это также невозможно сгенерировать для Lombok из-за вышеупомянутого ограничения.
Короче говоря: @Wither
плохо работает с наследованием. Я предлагаю поставить его только на Parent
и реализовать его вручную для Child
.