Как сделать, чтобы тип указал аннотацию? - PullRequest
0 голосов
/ 20 октября 2018

Я пытаюсь создать универсальный класс в Android с использованием Java, но я хочу убедиться, что тип будет принимать конкретные классы с конкретными аннотациями, например так: у меня есть класс Table с аннотацией @Entity

@Entity
public class Table{}

, а универсальный класс должен принимать только объекты, имеющие аннотацию @Entity

Ответы [ 2 ]

0 голосов
/ 20 октября 2018

Простой ответ: невозможно.

Аннотации представляют метаинформацию, которая недоступна при построении классов с использованием параметров универсального типа.

0 голосов
/ 20 октября 2018

Если вы хотите проверить аннотацию класса, вы должны использовать Reflection
http://static.javadoc.io/org.reflections/reflections/0.9.10/org/reflections/Reflections.html getTypesAnnotatedWith - это необходимая вам функция

final Reflections reflections = new Reflections(packagePrefix);
    final Set<Class<?>> namedClasses = reflections.getTypesAnnotatedWith(Named.class);
    for (final Class<?> namedClass : namedClasses) {

    }
...