Найти класс внутри списка классов с потоком Java - PullRequest
3 голосов
/ 03 июня 2019

Я собираюсь найти класс в списке классов (List<Class<?>>) с потоками Java:

Class cls = classList.stream().filter(clazz -> clazz.getName().startsWith("MyName")).findAny().orElse(null);

В списке существует класс с именем MyNameClass, но значение cls в конце равно нулю. Что-то не так в filter()?

Ответы [ 2 ]

10 голосов
/ 03 июня 2019

Вы должны использовать .getSimpleName, .getName возвращает полностью определенное имя класса с пакетом в нем.Например, String.class.getName() возвращает «java.lang.String».

3 голосов
/ 03 июня 2019

Используйте .getSimpleName() в вашем фильтре

classList.stream()
         .filter(clazz -> clazz.getSimpleName().startsWith("MyName"))
         .findAny()
         .orElse(null);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...