Существует ли существующий предикат, представляющий оператор instanceof? - PullRequest
3 голосов
/ 07 января 2020

Я использую лямбда-выражение Java 8 для разбиения списка (используя .collect(Collectors.partitioningBy(...))), и мне нужно, чтобы мои критерии разбиения определяли, является ли элемент экземпляром данного класса.

Работает следующим образом

list.stream().collect(Collectors.partitioningBy(elt -> elt instanceof EltType))

Но существует ли существующий предикат "InstanceOf", который я могу использовать вместо ссылки на метод?

1 Ответ

9 голосов
/ 07 января 2020

Да, вы можете использовать Class::isInstance

Этот метод является динамическим c эквивалентом оператора Java language instanceof

Пример

list.stream().collect(Collectors.partitioningBy(EltType.class::isInstance))
...