Вы можете использовать статический инициализатор:
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
.
Однако необходимость добавления сложной логики инициализации и обработки исключений к статическому инициализатору часто является признаком более фундаментальной проблемы проектирования. Вы написали в разделе комментариев, что это класс пула соединений с базой данных. Вместо использования статического финала рассмотрите возможность сделать его переменной экземпляра. Затем вы можете выполнить инициализацию в конструкторе или, что еще лучше, в методе статической фабрики.