Ver Mensaje Individual
  #1 (permalink)  
Antiguo 16/12/2009, 05:57
Urdaris_Nox
 
Fecha de Ingreso: mayo-2008
Mensajes: 103
Antigüedad: 16 años, 7 meses
Puntos: 14
Duda de "teoría" respecto Variables Final

Buenas;

Llevo unos días leyendo acerca de las variables de caracter "Final". Vengo de C, así que no me ha sido difícil entenderlo de forma general tras la comparativa con los #define, constants etc.

Así, sabiendo que un "final int CANTIDAD_DE_COCHES = 10" me definiría una cantidad de coches = 10 para todo el programa, entiendo que una variable final es inmodificable.

Ahora mi duda es esta;

Estaba yo programando un campo JTextField en un método que recoje el tipeamiento, de forma que:

Código:
textInstruccio.addKeyListener(new KeyListener() {
			public void keyPressed(KeyEvent arg0) {
			}
			public void keyReleased(KeyEvent arg0) {
			}
			public void keyTyped(KeyEvent arg0) {
				char teclaTipejada = arg0.getKeyChar();
				if (teclaTipejada == KeyEvent.VK_ENTER){
					novaNoticia("S'ha pulsat enter!");
					textInstruccio.setText("");
				}
			}
		});
Esto funcionaba, y tenía el textInstruccio definido GLOBALMENTE fuera del método. Pensaba que si borraba la definición global y declaraba el JTextField dentro del método, funcionaría igual, ya que nadie la usa fuera del mismo.

El caso es que al borrar la definición global y agregar la declaración en el método "JTextField textInstruccio = JTextField();", Java me pide que la defina como FINAL. Y me ha desconcertado, puesto que el JTextField puede modificarse, se usa, se "toca". Y no sé que Final tiene eso.

Código:
final JTextField textInstruccio = new JTextField(1);
		textInstruccio.addKeyListener(new KeyListener() {
			public void keyPressed(KeyEvent arg0) {
			}
			public void keyReleased(KeyEvent arg0) {
			}
			public void keyTyped(KeyEvent arg0) {
				char teclaTipejada = arg0.getKeyChar();
				if (teclaTipejada == KeyEvent.VK_ENTER){
					novaNoticia("S'ha pulsat enter!");
					textInstruccio.setText("");
				}
			}
		});
Gracias por leerme, y si se da el caso, por ayudarme ;)