今天想实现一个继承了接口即可在项目启动时初始化接口的实现方法的功能,但是项目启动时出现了这个异常:

java.lang.NoSuchMethodException:xxxx.<init>()_初始化

最后发现原因是:

由于我是先通过包扫描获取所有的Class再获取该接口的实现类,获取该接口的实现类使用的方法是:

java.lang.NoSuchMethodException:xxxx.<init>()_初始化_02

而这个方法在当前Class是它自己本身的时候也会返回true,所以接口本身也被放在容器集合里面了。就造成后面在执行方法的时候:

java.lang.NoSuchMethodException:xxxx.<init>()_初始化_03

无法执行一个没有方法体的空方法,造成了这个问题。将接口从容器中去除即可。