Я играю вокруг Аннотация в Java.Я использую отражение, чтобы получить значения в аннотированных значениях во время выполнения.Ниже показано, как я использую отражение, чтобы получить все аннотированные переменные и их значения.
Reflections reflections = new Reflections(".*");
Set<Class<?>> flagAnnotatedClasses =
new HashSet<Class<?>>() {
{
addAll(reflections.getTypesAnnotatedWith(Flag.class));
}
};
for (Class cl : flagAnnotatedClasses) {
// Get all the flags for a particular class annotated with @Flag.
Annotation[] flags = cl.getAnnotationsByType(Flag.class);
for (Annotation flag : flags) {
String name = ((Flag) flag).name();
String value = ((Flag) flag).value();
System.out.println("name = " + name + ", value = " + value);
}
}
Работает нормально, за исключением того, что во время компиляции выдает предупреждение:
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
Итак, я запустил его с -Xlint:unchecked
и получил предупреждение ниже:
warning: [unchecked] unchecked call to <A>getAnnotationsByType(Class<A>) as a member of the raw type Class
Annotation[] flags = cl.getAnnotationsByType(Flag.class);
^
where A is a type-variable:
A extends Annotation declared in method <A>getAnnotationsByType(Class<A>)
Как мне избавиться от этого предупреждения?