我正在开发一个库。我希望在某个其他库位于类路径中时,还可以使用某些功能。我的理解是:
我说错了吗?
答案 0 :(得分:6)
我说错了吗?
是
运行时依赖性仅在代码路径到达...
时出现
我会将其命名为执行路径。任何时候执行中的代码都会达到一些
a.A a = new a.A();
如果类a.A不在您的类路径上,它将抛出Runntime异常。这意味着你必须运行并达到这一点才能得到错误。如果您的程序没有达到这一点,它永远不会失败。
答案 1 :(得分:2)
您可能已经这样做了,但是如果类在运行时可能会或可能不在类路径上,我建议使用ClassLoader显式加载类,如果找不到类,则采取适当的操作(因为这个在你的情况下听起来不像错误条件)。它会使代码更清晰,而不是像以下那样:
try {
new MyClass(); // Could potentially thrown a ClassNotFoundException.
// ... yada yada
} catch(ClassNotFoundException ex) {
// Do something else instead.
}
您可能需要考虑的其他方法是将库调用包装在适配器层中,并在库不可用的情况下提供适配器的No-Op实现,使代码的其余部分与库是否无关是否存在。