3 回答
冉冉说
TA贡献1877条经验 获得超1个赞
当您希望您的程序具有“插件”功能时,您可以使用 ServiceLoader。当您希望允许人们通过将 jar 文件添加到包含特定功能子集实现的类路径来自定义您的应用程序时,您可以使用 ServiceLoader 在类路径中查找这些实现。
ServiceLoader 本身就是jar SPI 规范的一个实现,这个规范已经存在很长时间了。(我相信它是在 Java 1.3 中引入的。)
Java SE 已经在很多地方将它用于这个目的,包括:
通过CharsetProvider 的额外字符集
通过FileSystemProvider 的附加文件系统(请参阅FileSystems)
通过FileTypeDetector 的其他文件内容类型分析器(请参阅Files.probeContentType)
附加首选项通过PreferencesFactory实现(参见Preferences)
通过LocaleNameProvider 的附加语言环境
通过IIORegistry 的其他图像格式
通过PrintServiceLookup 的附加打印机
通过ScriptEngineFactory自定义脚本引擎
添加回答
举报
0/150
提交
取消