Sé que una vez que una variable final tiene un valor asignado, no se puede cambiar. Sin embargo sólo tengo un par de preguntas con respecto a esto:Java - variables finales
Cuando tengo un campo, por ejemplo
static final JButton button;
fuera de una clase, y luego en el métodomain
, tratar de asignarle un valor,button = new JButton("OK");
, me sale un error diciéndome que elimine el modificador final? Sin embargo, dado que la variable originalbutton
aún no hace referencia a un objeto que estaba bajo la impresión, ¿podría asignarlo una vez?En segundo lugar, si elimino por completo la referencia al
button
, entonces tengostatic final JButton button;
fuera de la clase, mi IDE dice "El botón de campo final en blanco puede no haberse inicializado". ¿Esto significa que se deben inicializar todos los campos finales ? Y si es así, deben inicializarse allí y luego, ya que no puedo iniciarlo más tarde.También, pregunta tonta, pero mi suposición inicial de que cuando una variable final se hace referencia a una instancia o tipo de datos que no se puede asignar a otra cosa es correcta, ¿no?
Este código no es completa, pero se proporciona para ilustrar mi punto:
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);
}
}
¿No es obligatoria para inicializar la variable final en el momento de la declaración? –