gpt4 book ai didi

java - 无法定义私有(private)静态最终变量,因为它会引发异常

转载 作者:IT老高 更新时间:2023-10-28 20:56:37 25 4
gpt4 key购买 nike

我有这样的课:

public class SomeClassImpl implements SomeClass {
private static final SomeLib someLib = new SomeLib();
}

我不能这样做,因为 SomeLib 会引发 UnknownHostException。

我知道我可以将实例化移动到构造函数,但是有没有办法让我按照我上面的方式来做呢?这样我就可以将 var 标记为 final。

我试图寻找如何在类级别引发异常,但找不到任何东西。

最佳答案

你可以使用静态初始化器:

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 的事实,因为它是 最终.

但是,需要向静态初始化程序添加复杂的初始化逻辑和异常处理通常表明存在更基本的设计问题。您在评论部分写道,这是一个数据库连接池类。而不是使用 static final 考虑将其设置为实例变量。然后,您可以在构造函数中进行初始化,或者在静态工厂方法中进行更好的初始化。

关于java - 无法定义私有(private)静态最终变量,因为它会引发异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8367950/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com