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

查找实现接口的Java类

查找实现接口的Java类

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

3 回答

?
守着一只汪

TA贡献1872条经验 获得超3个赞

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

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-07-13
?
一只萌萌小番薯

TA贡献1795条经验 获得超7个赞

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

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


查看完整回答
反对 回复 2019-07-13
  • 3 回答
  • 0 关注
  • 762 浏览

添加回答

举报

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