如何获取自定义注解标记的类

1、如何把一个包里所有自己想要的自定义注解标记的类,放入容器(一个Set<Class<?>>)中?

@Controller //比如@Controller是自定义的注解
public class HelloController{ //在A包下
    // ....
}


@Controller
public class TestController{//在B包下
 // ....
}

// A和B包都是C包的子包


笨笨的方法:先找出这个包下,所有的java(后缀为.class)文件,放入一个Set<Class<?>>中(假设得到的这个Set叫ALL_SET),再根据注解的类型,筛选自己想要的。

Set<Class<?>> controllerClassSet = new HashSet<>();
for(Class<?> cls: ALL_SET){
    if(cls.isAnnotationPresent(Controller.class)){ //Controller.class是一个自定义注解,具体见下面的代码
        controllerClassSet.add(cls);
    }
}
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface Controller{ //自定义注解
}

猜你喜欢

转载自blog.csdn.net/qq_18433441/article/details/81123016
今日推荐