您可以使用静态初始化程序:
public class SomeClassImpl implements SomeClass { private static final SomeLib someLib; static { SomeLib tmp = null; try { tmp = new SomeLib(); } catch (UnknownHostException uhe) { // Handle exception. } someLib = tmp; }}请注意,我们需要使用一个临时变量来避免“变量someLib可能尚未初始化”的错误,并应对
someLib由于存在而只能分配一次的事实
final。
但是,需要向静态初始值设定项添加复杂的初始化逻辑和异常处理通常是更基本的设计问题的标志。您在注释部分中写道,这是一个数据库连接池类。与其使用静态final,不如考虑使其成为实例变量。然后,您可以在构造函数中进行初始化,也可以在静态工厂方法中进行初始化。



