一个接口 interface X有几个实现类
     
       Aimpl,Bimpl,Cimpl
怎么通过程序去根据接口X寻找它几个实现类?我主要想把几个实现类的路径和类名放在数据库里,如有一个任务表id  classzaa       taskname
1   com.xx.Aimpl    发邮件
2   com.xx.Bimpl    发短讯
3   com.xx.Cimpl    记录日志 如果能得到 interface X 几个实现类,然后在从任务表里找到想实现的类名,进行比较就可以动态找到该执行的实现类了 
         

解决方案 »

  1.   

    感觉就好比你是一个明星,然后有许多崇拜你的歌迷,你怎么知道到底有哪些歌迷是崇拜你的呢?
    我觉得有两种情况:一种是你的歌迷脸上写着是你的fans,另一种情况就是去看到每个人心里想的
    回到原题:我觉得只能通过扫描文件的方式;第一种情况就是实现接口的子类有固定的文件名格式,比如Aimpl,Bimpl,Cimpl都已impl结尾;第二种情况就是通过程序反编译class,看源码中是否实现某一接口。不知道其他人有没有更好的做法
      

  2.   

    eclipse 里有搜索,是可以搜索出对接口的引用的。
      

  3.   

    OSGI里就可以把注册服务几个实现类都找出来  ServiceReference[] serviceRefs = AppUtil.BUNDLECONTEXT.getServiceReferences(className, null);
      
      

  4.   

    在eclipse的帮助包里面找,哪里的内容齐全的很
      

  5.   

    哦,感谢 mopishv0 的提醒,确实可以通过反射来实现
      

  6.   

    我觉的 可以考虑工厂模式+xml
      

  7.   

    不知道SPRING 可以实现吗,小弟还是按照AFer198215的方法做了一个简单XML文件,去对应,不过还是比较麻烦,如果能取到在SPRING注册服务就好了