Класс MyEntity расширяет базовый класс. Оба имеют аннотацию @SuperBuilder ломбок (версия 1.18.34).
@Getter
@Setter
@SuperBuilder
@ToString(onlyExplicitlyIncluded = true)
@EqualsAndHashCode
public abstract class BaseEntity {
public abstract SomeType getSomeType();
}
@Value
@SuperBuilder
@ToString(onlyExplicitlyIncluded = true)
@EqualsAndHashCode(callSuper = true)
public class MyEntity extends BaseEntity {
@Override
public SomeType getSomeType() {
return SomeType.SOMETHING;
}
}
Если я попытаюсь сопоставить что-то с MyEntity вот так
someItems.stream()
.map(item -> MyEntity.builder().build())
.toList();
Тип возвращаемого значения — List. Почему компилятор не может определить тип здесь? Если я посмотрю на метод build(), я увижу общий общедоступный абстрактный C build().
В качестве обходного пути я могу перенести сборку в отдельный метод. .
private MyEntity getBuild(SomeItem item) {
return MyEntity.builder().build();
}
List myEntities = someItems.stream() // works
.map(item -> getBuild(item))
.toList();
Подробнее здесь: https://stackoverflow.com/questions/791 ... perbuilder
Потоковая карта классов с помощью Lombok SuperBuilder ⇐ JAVA
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Наследование Lombok @SuperBuilder с дженериками всегда показывает «захват?»
Anonymous » » в форуме JAVA - 0 Ответы
- 32 Просмотры
-
Последнее сообщение Anonymous
-