I have a class like:
public class SomeClassImpl implements SomeClass {
private static final SomeLib someLib = new SomeLib();
}
I can’t do this because SomeLib throws a UnknownHostException.
I know I could move the instantiation to the constructor, but is there a way for me to do it the way I have it above somehow? That way I can keep the var marked as final.
I tried to look for how to throw exceptions at the class level but can’t find anything on it.
You can use static initializer:
Note that we need to use a temporary variable to avoid “variable someLib might not have been initialized” error and to cope with the fact that we can only assign
someLibonce due to it beingfinal.However, the need to add complex initialization logic and exception handling to static initializer is often a sign of a more fundamental design issue. You wrote in the comments section that this is a database connection pool class. Instead of using static final consider making it an instance variable. You can then do the initialization in a constructor or better yet in a static factory method.