我知道一旦为最终变量分配了一个值,就无法更改它。但是,我对此有几个问题:
当我有一个字段时,比如说
static final JButton button;
在一个类之外,然后在main
方法中,尝试为它分配一个值,button = new JButton("OK");
我得到一个错误,告诉我删除 final 修饰符?但是,由于原始button
变量尚未引用对象,我的印象是我可以分配一次?其次,如果我完全删除了对类外的引用,
button
我static final JButton button;
的 IDE 会声称“空白的最终字段按钮可能尚未初始化”。这是否意味着必须初始化所有最终字段?如果是这样,它们必须在那里初始化,然后我似乎无法在以后初始化它。另外,愚蠢的问题,但我最初的假设是,当最终变量被引用到实例或数据类型时,它不能分配给其他任何东西是正确的,对吧?
此代码不完整,但用于说明我的观点:
public class FinalVarTester {
static final JButton button;
public static void main(String[] args) {
JFrame frame = new JFrame();
Container container = frame.getContentPane();
container.setLayout(new BorderLayout());
button = new JButton("OK");
container.add(button, BorderLayout.SOUTH);
}
}