Как кастовать list entity в инетерфейс?

Подскажите пожалуйста как преобразовать коллекцию:

Несколько entity хочу объединить при поищи интерфейса EntityUnion

public interface EntityUnion {
}

Есть entity:

@Entity
@Table(name = "advantageous_tickets")
public class Table implements EntityUnion {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    private String name;

Репозиторий для извлечения entity Table

public interface TableRepository extends CrudRepository<Table, Long> {
}

Далее Dto

@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class DTo {
    private Iterable<EntityUnion> entityUnion;
}

У нас есть какой-то сервис

Iterable<Table> table =  tableRepository.findAll();
Dto.builder()
.entityUnion(???)
.build()

Как table добавить в entityUnion ?


Ответы (1 шт):

Автор решения: tequillaz

В Java обобщенные типы инвариантны. Перед тем, как добавить Iterable<Table> table в dto, необходимо привести шаблонный тип, например, так:

List<EntityUnion> table =  tableRepository
                             .findAll()
                             .stream()
                             .map(t -> (EntityUnion)t)
                             .collect(Collectors.toList());
→ Ссылка