Я знаю, что если конечной переменной присвоено значение, оно не может быть изменено. Однако у меня просто есть пара вопросов по этому поводу :
. Когда у меня есть поле, скажем, static final JButton button;
вне класса, а затем в методе main
попробуйте присвоить ему значение, button = new JButton("OK");
, я получаю ошибка, говорящая мне удалить окончательный модификатор? Однако, поскольку исходная переменная 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);
}
}