Наследование Lombok @SuperBuilder с дженериками всегда показывает «захват?»JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Наследование Lombok @SuperBuilder с дженериками всегда показывает «захват?»

Сообщение Anonymous »

Я пытаюсь создать несколько классов с некоторой иерархией наследования. Для создания экземпляров этих классов я хочу использовать построители, но я также хочу переопределить некоторые методы в этих построителях. Поскольку наследование есть, я реализовал его с помощью @SuperBuilder. Но добавление дженериков все немного испортило, и я не знаю, как это правильно исправить.
У меня есть базовый класс, определенный как:

Код: Выделить всё

@SuperBuilder
public class Base {
protected T payload;
protected String name;
protected String attribute;
}
теперь я хотел создать новый класс, который расширяет этот класс, но будет ограничивать тип атрибута полезной нагрузки, а также устанавливать некоторые значения по умолчанию, поэтому я определил его как:

Код: Выделить всё

@SuperBuilder
public class ChildA extends Base {

public abstract static class ChildABuilder

extends Base.BaseBuilder {

NotifiedEventBuilder() {
super.name("CHILD A");
}

@Override
public B payload(T payload) {
return super.payload(payload).attribute(payload.attribute());
}
}
}
но это приведет к ошибке: «оба метода имеют одинаковое стирание, но ни один из них не скрывает другой». Поэтому я изменил родительский @SuperBuilder на @SuperBuilder(builderMethodName = "baseBuilder"), что решило проблему. (Давайте предположим, что у Payload также есть атрибут «attribute», просто для иллюстрации моей проблемы).
Однако я не могу создать такой экземпляр. Пытаюсь сделать следующее:

Код: Выделить всё

ChildA
 childA = ChildA.builder()
.payload(new PayloadChild())
.build();
приводит к ошибке в .payload(new PayloadChild()), в которой говорится, что ожидалось T, но был предоставлен PayloadChild. (Предполагается, что PayloadChild расширяет Payload).
Я попробовал «деломбокинг» кода и создал несколько функциональный класс. Но у меня все еще есть проблемы со сборкой экземпляров базового класса, например, для тестирования, и я не считаю, что деломбокинг должен быть решением.
Что я делаю не так? Какие изменения потребуются, чтобы это заработало?

Подробнее здесь: https://stackoverflow.com/questions/781 ... capture-of
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • При использовании Lombok 1.18.32 с Java 17 выдается ошибка: типы Lombok.Setter и Lombok.Setter недоступны.
    Anonymous » » в форуме JAVA
    0 Ответы
    114 Просмотры
    Последнее сообщение Anonymous
  • Потоковая карта классов с помощью Lombok SuperBuilder
    Anonymous » » в форуме JAVA
    0 Ответы
    17 Просмотры
    Последнее сообщение Anonymous
  • Потоковая карта классов с помощью Lombok SuperBuilder
    Anonymous » » в форуме JAVA
    0 Ответы
    26 Просмотры
    Последнее сообщение Anonymous
  • Потоковая карта классов с помощью Lombok SuperBuilder
    Anonymous » » в форуме JAVA
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous
  • Lombok @SuperBuilder меняет одно из названий моих полей?
    Anonymous » » в форуме JAVA
    0 Ответы
    19 Просмотры
    Последнее сообщение Anonymous

Вернуться в «JAVA»