Я пытаюсь собрать набор классов по критериям аннотации с отражениями (для улучшения производительности):
Reflections reflections = new Reflections(packagePrefix);
Set<Class<Foo>> foos = reflections.getTypesAnnotatedWith(BooAnnotation.class);
Проблема в том, что я получаю Set<Class<?>>
вместо Set<Class<Foo>>
. Мне удалось проверить, является ли класс типом Foo
, отфильтровав коллекцию с помощью .filter(Foo.class::isAssignableFrom)
. На данный момент я знаю, что я работаю с классами типа Foo
. К сожалению, при касте от Class<?>
до Class<Foo>
я получаю Непроверенный каст , и я хочу избежать этого.
Вот полный блок кода:
Reflections reflections = new Reflections(packagePrefix);
Set<Class<Foo>> foos = reflections.getTypesAnnotatedWith(BooAnnotation.class)
.stream()
.filter(Foo.class::isAssignableFrom)
.map(uncheckedFoo -> {
@SuppressWarnings("unchecked")
Class<Foo> foo = (Class<Foo>) uncheckedFoo;
return foo;
})
.collect(Collectors.toSet());
Есть предложения по этому поводу?