类可用性检查

时间:2013-08-16 09:38:13

标签: java

我有一个依赖jar , 对于构建A,dependency.jar将包含类A,B,C,D。 对于构建B,dependency.jar将只包含类A,B,C

问题:

来源: 我的代码正在使用所有类A,B,C,D。

目标: 我编写的代码对于构建A和B应该保持不变。

问题: 但是显然D类在Build B中不可用。所以我的代码应该处理D类的可用性。同时我要添加的额外代码来处理D类的可用性,不应该减慢我的代码

请建议可能的解决方案。

一种解决方案: 我们将使用Class.forName()API来检查Class的可用性。

解决方案的问题: 如果它不可用,API将每次抛出classdefnotfound,并且根据我的理解,class.forName会尝试加载类,因此会很慢。

注意: D类是可选的,如果它不可用,则应禁用与该类相关的功能

2 个答案:

答案 0 :(得分:1)

您可以在任何类的类或类装入器对象上使用方法getResource()。如果它返回null然后 类不存在如下

URL url=SomeClass.class.getClassLoader().getResource("className.class");
 if(url==null)//class not present

答案 1 :(得分:0)

您需要使用反射动态加载D类,然后调用其方法,就像对数据库驱动程序一样。您不能在代码中直接引用您的类,否则您的代码将无法编译并抱怨该类不可用。如果您的类可以在运行时加载,则打开所需的功能以便关闭它们。