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{ //自定义注解
}

 

Logo

助力广东及东莞地区开发者,代码托管、在线学习与竞赛、技术交流与分享、资源共享、职业发展,成为松山湖开发者首选的工作与学习平台

更多推荐