引入依赖:
<dependency>
<groupId>org.reflections</groupId>
<artifactId>reflections</artifactId>
<version>0.10.2</version>
</dependency>
定义注解:
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface MyAnnotation {
String value() default "";
}
创建3个类并使用自定义注解:
@MyAnnotation("been")
public class Been {
}
@MyAnnotation("小猫咪")
public class Cat {
}
@MyAnnotation("")
public class Dog {
}
利用反射解析注解:
public class MyAnnotationUtil {
public static final Map<String, String> map;
static {
map = new LinkedHashMap<>();
//扫描的包
String packages = "com.cc.springboot.annotation";
Reflections fs = new Reflections(packages);
Set<Class<?>> sets = fs.getTypesAnnotatedWith(MyAnnotation.class);
for (Class<?> s : sets) {
MyAnnotation annotation = s.getAnnotation(MyAnnotation.class);
String value = annotation.value();
if ("".equals(value)) {
String[] split = s.getName().split("\\.");
String name = split[split.length - 1];
map.put(name, s.getName() + "-->此类使用了自定义注解");
} else {
map.put(value, s.getName() + "-->此类使用了自定义注解");
}
}
}
public static void main(String[] args) {
Map<String, String> maps = MyAnnotationUtil.map;
System.out.println(maps);
}
}
运行结果: