我知道一旦为final变量分配了值,它就不能被更改。但是我有几个关于此的问题:
当我有一个字段,例如在类外面声明
static final JButton button;
,然后在main
方法中尝试为它赋值时,比如button = new JButton("OK");
,我会收到一个错误提示告诉我要去掉final修饰符?但是既然原始的button
变量还没有引用对象,我认为我可以为它赋值一次?其次,如果我完全删除对
button
的引用,只剩下static final JButton button;
在类外部,我的IDE会报错:“未初始化空final字段button”。这是否意味着所有final字段必须被初始化?如果是这样,它们必须在那里立即被初始化吗?因为我似乎无法稍后初始化它。另外,这可能是一个愚蠢的问题,但我的最初假设是一个final变量被引用到一个实例或数据类型之后,它就不能被分配给其他任何东西,这是正确的吗?
以下代码并不完整,只是为了阐述我的观点:
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);
}
}