【发布时间】:2015-06-26 16:19:58
【问题描述】:
我正在尝试编写以下课程:
public class Secteur {
private final static int num_secteur;
static{
try {
num_secteur = SecteurDAO.getCurrNumSecteur();
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
}
}
}
但我收到以下警告:
最后的空白字段 num_secteur 可能尚未初始化
SecteurDAO.getCurrNumSecteur() 方法访问数据库以获取将设置为 num_secteur 字段的整数。
我的代码有什么问题?
【问题讨论】:
-
因为在赋值之前可能会抛出异常。
-
这有什么危险?
-
危险在于您可能有一个未初始化的变量,如错误消息所述。如果你不能依赖它被初始化,你必须在类尝试使用它时检查它是否被初始化。
-
我个人的偏好是在这种情况下不使用静态块,而是使用静态方法返回值。优点是 1)您可以命名该方法以使其显而易见; 2)你不想让方法做很多事情,例如初始化多个变量; 3)您可以随时调用它,例如在单元测试中。
标签: java static initialization final