java与jdk7和jdk8上的(已更改的)doclet API保持兼容
我正在开发一个使用DocletAPI的maven插件(例如ConfigurationImpl.getInstance()
和HtmlDocletWriter.commentTagsToString()
)。此API包含在工具中。JDK附带的jar
在jdk8上,这些方法已经不存在了,因此插件中断
我现在正在寻找一种方法,使我的插件能够同时使用jdk7和JDK8
我正在考虑使用一个提供稳定API的接口,并为每个JDK提供不同的实现。但是,我不确定如何切换/加载正确的实现。请注意,所有内容都需要打包在同一个jar(maven插件)中
有什么建议吗
# 1 楼答案
创建一个工厂,为您提供一个接口实例。在工厂内检查
java.version
系统属性。如果是>= 8
,那么您将为JDK 8实例化接口实现,否则为JDK 7实例化接口实现。这些实现类只能在该工厂中加载。因此,您不会遇到缺少API的问题,因为不会加载依赖于该API的类