卜若的代码笔记-java编程技巧-第四章:反射基础(4)->关于前面三章提供的反射代码无法在jar中正常使用的解释

请使用...Relections框架,我也是抄人家的代码...那个代码有问题,应该是路径问题,当你打包成jar了之后,你的整个系统已经处于一个类似于沙盒的环境,前三章给的代码,在idea环境里面用着没问题,但是打包之后就无法使用了,所以最好还是使用框架

    <dependency>
      <groupId>org.reflections</groupId>
      <artifactId>reflections</artifactId>
      <version>0.9.10</version>
    </dependency>

我们通常喜欢扫描实现了某个接口的对象然反射实例化它:

    public static <T> Set<Class<? extends T>> getReflectionClass(Class<T> type){
      
        Reflections reflections = new Reflections(new ConfigurationBuilder().forPackages("com.netty.controller").addScanners(new SubTypesScanner()).addScanners(new FieldAnnotationsScanner()));

        Set<Class<? extends T>> subTypes = reflections.getSubTypesOf(type);

        return subTypes;
    }

这个是一个标准的调用格式

包名自定义之外,其他的不变就好

算了,重载一下吧

    public static <T> Set<Class<? extends T>> getReflectionClass(Class<T> type,String packageName){

        Reflections reflections = new Reflections(new ConfigurationBuilder().forPackages(packageName).addScanners(new SubTypesScanner()).addScanners(new FieldAnnotationsScanner()));

        Set<Class<? extends T>> subTypes = reflections.getSubTypesOf(type);

        return subTypes;
    }

一个简单的反射生成实现接口的实例:

哎,贼坑...我特么意味netty和springboot联机就有问题,问题是之前也搞过没问题啊,原来他么的是老子反射的问题...算了,能用框架就用框架吧,尤其是商业项目,除非你有很牛逼的团队...

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章