Я знаю, что как только конечная переменная имеет назначенное ей значение, ее нельзя изменить. Однако у меня есть несколько вопросов относительно этого:
-
Когда у меня есть поле, скажем
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);
}
}