Потоковая карта классов с помощью Lombok SuperBuilderJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Потоковая карта классов с помощью Lombok SuperBuilder

Сообщение Anonymous »

Класс 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
Ответить

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

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

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

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

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