为了账号安全,请及时绑定邮箱和手机立即绑定

查找实现接口的Java类

查找实现接口的Java类

阿波罗的战车 2019-08-03 15:03:48
查找实现接口的Java类不久前,我遇到了一段代码,它使用一些标准Java功能来定位实现给定接口的类。我知道函数隐藏在一些非逻辑的地方,但它们可以用于其他类,就像包名所暗示的那样。那时我不需要它,所以我忘了它,但现在我忘记了,我似乎再也找不到它的功能了。在哪里可以找到这些功能?编辑:我不是在寻找任何IDE函数或任何东西,而是可以在Java应用程序中执行的东西。
查看完整描述

3 回答

?
慕容708150

TA贡献1831条经验 获得超4个赞

春天可以为你做这件事.。

BeanDefinitionRegistry bdr = new SimpleBeanDefinitionRegistry();
ClassPathBeanDefinitionScanner s = new ClassPathBeanDefinitionScanner(bdr);
TypeFilter tf = new AssignableTypeFilter(CLASS_YOU_WANT.class);
s.addIncludeFilter(tf);s.scan("package.you.want1", "package.you.want2");       
String[] beans = bdr.getBeanDefinitionNames();

注:如果您想要正确的结果,TypeFilter是很重要的!您也可以在这里使用排除筛选器。

扫描仪可以在Spring上下文JAR中找到,在Springbean中可以找到注册表,类型过滤器在Spring核心中。




查看完整回答
反对 回复 2019-08-05
?
UYOU

TA贡献1878条经验 获得超4个赞

你说的代码听起来像是ServiceLoader,它是在Java 6中引入的,以支持自Java 1.3或者更早。出于性能原因,这是在运行时查找接口实现的推荐方法;如果您需要在旧版本的Java中支持此方法,我希望您能够找到我的实施很有帮助。

在早期版本的Java中有几个实现,但是在Sun包中,而不是在核心API中(我认为ImageIO内部有一些类可以这样做)。由于代码很简单,我建议提供您自己的实现,而不是依赖可能会更改的非标准Sun代码。




查看完整回答
反对 回复 2019-08-05
  • 3 回答
  • 0 关注
  • 315 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信