美文网首页互联网科技JavaJava 杂谈
Java动态获取实现某个接口下所有的实现类对象集合

Java动态获取实现某个接口下所有的实现类对象集合

作者: cd4bd3aa39ec | 来源:发表于2019-05-24 21:59 被阅读7次

最近有个需求,我需要获取所有同一类型的定时任务的对象,并自动执行。

我想的方案是:直接获取某个接口下面所有的实现类的对象集合,方便以后只需要 实现这个接口,就能自动被加载执行。话不多说,说说我的实现方案。

开始想着用反射自己写一个工具类,后面懒得去折腾,就直接用第三方工具包了,这里我用的是org.reflections。

maven配置:

<dependency> 
<groupId>org.reflections</groupId> 
<artifactId>reflections-spring</artifactId> 
<version>${reflections.version}</version> 
<exclusions> 
<exclusion> 
<groupId>javassist</groupId> 
<artifactId>javassist</artifactId> 
</exclusion> 
</exclusions> 
</dependency>

我这里去除javassist包是因为单独引入了javassist其他版本

另外就是代码引用了,以DelayedBaseMonitor接口为例:

List<DelayedBaseMonitor> monitorLists = new ArrayList<>(); 
Reflections reflections = new Reflections(delayedFindPackageName); 
Set<Class<? extends DelayedBaseMonitor>> monitorClasses = reflections.getSubTypesOf(DelayedBaseMonitor.class); 
for (Class<? extends DelayedBaseMonitor> monitor : monitorClasses) { 
  monitorLists.add(ApplicationContext.getBean(monitor)); 
}

这里我用了Spring的ApplicationContext去获取bean,这样能获取这些实现类里面其他spring注入的bean。如果是简单方式的话,你们可以直接通过

monitor.getNewInstance来实现

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值

相关文章

  • Java动态获取实现某个接口下所有的实现类对象集合

    最近有个需求,我需要获取所有同一类型的定时任务的对象,并自动执行。 我想的方案是:直接获取某个接口下面所有的实现类...

  • Java类实现某个接口后,是否需要实现接口中的所有方法?

    1.结论并不是所有的类实现接口后都必须实现接口的所有方法! 2.特殊情况当Java抽象类实现某个接口后没必要实现所...

  • Java动态代理--JDK实现

    java动态代理JDK实现 步骤 定义接口 目标类(实现上面的接口) 实际处理类 实现InvocationHand...

  • 成为Java顶尖程序员,先过了下面问题!(二)

    二、Java基础 1.接口与抽象类的区别? 接口是抽象方法的集合,一个类实现了某个接口,就必须实现接口中的所有方法...

  • Java集合

    Java中的集合有两类:一类是Collection接口集合,实现有List和Set;还有一类是Map接口集合,实现...

  • java成神之路---集合框架

    标签(空格分隔): java java集合类库的设计思想:“接口与实现分离” java类库中的集合接口和迭代器接口...

  • Java集合族谱总结

    集合族谱核心成员 所有的集合类,都实现了Iterator接口,这是用于遍历集合中元素的接口;Java集合框架核心是...

  • Java08接口

    接口 概念抽象类型,是抽象方法的集合(如果某个类实现接口,就必须实现接口中所有的方法,除非这个类是个抽象类)。一个...

  • 2018-08-08

    java集合类的底层实现 LinkedList底层实现和原理 LinkedList类是List接口的实现类,它是一...

  • Java动态代理简单实现(AOP基础)

    1、动态代理的概念动态代理是在程序运行时,动态的创建一个实现了目标对象所实现的所有接口的增强对象。通过Proxy类...

网友评论

    本文标题:Java动态获取实现某个接口下所有的实现类对象集合

    本文链接:https://www.haomeiwen.com/subject/cfhozqtx.html