Java - variables finales

Je sais qu'une fois, une dernière variable a une valeur qui lui est assignée, il ne peut pas être changé. Cependant j'ai juste une ou deux questions concernant cette:

  • Quand j'ai un champ, dire static final JButton button; à l'extérieur de la classe, puis dans la main méthode, essayez d'attribuer une valeur, button = new JButton("OK");j'obtiens une erreur me disant de supprimer le dernier modificateur? Toutefois, depuis l'origine button variable n'a pas encore de référence à un objet que j'étais sous l'impression que je pouvais attribuer une seule fois?
  • Deuxièmement, si j'ai complètement supprimer la référence à l' button je viens donc de static final JButton button; en dehors de la classe, mon IDE revendications "Le vide final bouton de champ peut ne pas avoir été consultés." Est-ce à dire que tous les champs doit être initialisé? Et si oui, doivent-ils être initialisé là et puis comme je n'arrive pas à initialiser plus tard.
  • Aussi, question bête, mais mon hypothèse de départ que lors de la finale de la variable est référencée à une instance ou le type de données qu'il ne peut pas être affecté à autre chose c'est correct, non?

Ce code n'est pas complet, mais il est fourni pour illustrer mon propos:

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);
    }

}

source d'informationauteur Tim | 2012-04-21