У меня есть этот метод:
public static <T> List<T> flat(List<T>... lists){
return Stream.of(lists)
.filter(Objects::nonNull)
.flatMap(List::stream)
.collect(toList());
}
Идея состоит в том, чтобы создать список списков и вернуть список с тем же типом.
Предположим, что A
и B
расширяются C
. Это не работает:
List<A> listOfA;
List<B> listOfB;
List<C> listOfC = flat(listOfA, listOfB);
Потому что List<A>
это не List<C>
!
Кто-нибудь знает, как написать сигнатуру плоского метода с обобщениями, которые признают, что я пытаюсь сделать?
Спасибо!