Подтвердить что ты не робот

Java 8 Stream API: фильтр на экземпляр и литье

У меня есть список объектов:

List<SomeType> myList;

Я хочу получить список подтипов, доступных в этом списке:

List<SomeChildType> myChildList = myList.stream().filter(e -> e instanceof SomeChildType).collect(??????)

Я не знаю, как собрать, чтобы получить правильный тип списка.

4b9b3361

Ответ 1

Вам нужно бросить объекты:

List<SomeChildType> myChildList = myList.stream()
                                        .filter(SomeChildType.class::isInstance)
                                        .map(SomeChildType.class::cast)
                                        .collect(toList())