1
18
在Java 1.5中没有任何东西。我自己实现的,并不太复杂。但是,当我们升级到Java 6时,我将不得不用调用来替换对实现的调用。
这是核心理念:
更好的异常处理留给读者作为练习。此外,该方法还可以参数化以接受调用方选择的类加载器。 |
2
5
它看起来不像一个通用的实用程序类,但它是。它甚至比
见 http://docs.oracle.com/javase/7/docs/api/index.html?javax/imageio/spi/ServiceRegistry.html |
3
1
ServiceLoader非常基础,从1.3开始就在JDK中使用(非正式)。ServiceLoader最终成为了一流的公民。它只是为您的接口寻找一个名为的资源文件,它基本上捆绑在库JAR的META-INF目录中。 该文件包含要加载的类的名称。 所以,你会有一个文件名为: META-INF/services/com.example.your.interface 里面只有一行:com.you.your.interfaceimpl。 代替ServiceLoader,我喜欢NetBeans查找。它适用于1.5(可能是1.4)。 开箱即用,它与ServiceLoader做的事情完全相同,而且使用起来很简单。但它提供了更多的灵活性。 这里有一个链接: http://openide.netbeans.org/lookup/ 这里有一篇关于ServiceLoader的文章,但在底部提到了NetBeans查找: http://weblogs.java.net/blog/timboudreau/archive/2008/08/simple_dependen.html |
4
1
这是个老问题,但另一个选择是 包级批注 . 请看我的答案: Find Java classes implementing an interface 包级注释是package-info.java类中的注释。 JAXB使用这个而不是服务加载程序。我还认为它比服务加载器更灵活。 |
5
1
不幸的是,
只是真理的一部分。
有不标准的
http://www.docjar.com/docs/api/sun/misc/Service.html
注意,它不是标准J2SE API的一部分!
它是Sun JDK的非标准部件。
所以你不能依赖它,如果你使用,比如,
|
6
0
没有可靠的方法来知道类路径中有哪些类。根据它 documentation 服务加载器依赖外部文件来告诉它要加载哪些类;您可能也希望这样做。基本思想是使用一个名为要加载的类的文件,然后使用反射来实例化它/它们。 |
7
-1
您是否想过使用OSGi框架? |
Michel · 在Android上后台播放音频超过一分钟 2 年前 |
category · 在服务中处理较长的Pod响应时间 6 年前 |
theDoron1 · C#服务未将文件移动到正确的文件夹 6 年前 |
XpressGeek · 应用程序被终止时广播接收器未调用服务 6 年前 |
anakin59490 · 角度5-组件和服务之间的通信 6 年前 |