Java -final переменные

Я знаю, что если конечной переменной присвоено значение, оно не может быть изменено. Однако у меня просто есть пара вопросов по этому поводу :

  • . Когда у меня есть поле, скажем, 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);
    }

}
11
задан Tim 21 April 2012 в 13:58
поделиться