tengo una clase llamada Juego donde defino un Timer en el constructor
de la siguiente forma:
public class Juego
{
private Timer timerBajar;
private ActionListener tareaBajar;
// ............constructor
public Juego()
{
ActionListener tareaBajar = new ActionListener()
{
public void actionPerformed (ActionEvent e)
{
pieza.mueveAbajo(campoDeJuego.getTablero());
}
};
Timer timerBajar = new Timer (1000,tareaBajar);
}
//......... metodo principal
public void start()
{
campoDeJuego.ponerPieza(pieza);
campoDeJuego.dibujarTablero();
timerBajar.start();
...
}
Pues bien, si pongo el timerBajar.start(); en el constructor, funciona
correctamente, pero si la pongo donde en start (que es lo que he
copiado aqui), me da el error java.lang.NullPointerException: null
es decir como si la variable timerBajar no estuviese instanciada, pero
yo he creado una instancia en el constructor y además la variable es de
la clase. ¿que hago mal?
Muchas gracias
Por ser estrictos con la nomenclatura, las "variables" de las clases
se llaman "propiedades". No pasa nada, te he entendido, pero si te
acostumbras a llamar las cosas por el nombre comúnmente aceptado,
quedas más "pofesional". :-)
Bien, lo que sucede es que en el contrusctor no has inicializado la
propiedad timerBajar, sino una variable (esta sí es variable) local
del constructor, que resulta que se llama igual que la propiedad.
Tienes que corregir esta línea:
> Timer timerBajar = new Timer (1000,tareaBajar);
por esta:
> timerBajar = new Timer (1000,tareaBajar);
Aunque no se considera buen estilo de codificación, a mí me gusta usar
this. delante de las propiedades de una clase (y, si sirve para evitar
ambigüedades, incluso delante de los métodos). Si hubieras escrito:
> Timer this.timerBajar = new Timer (1000,tareaBajar);
el compilador te habría avisado que hay un error en esa línea y
posiblemente lo habrías detectado tú mismo. Siempre puedes escribir
"this.propiedad" para depurar y, cuando vayas a entregar el código a
alguien más, haces una búsqueda y reemplazo de "this." por "". :-)
Saludos.
--- Posted via news://freenews.netfront.net/ - Complaints to ne...@netfront.net ---
Respecto a lo de las variables, yo lo tengo visto como campos o como
variables de clase, es por eso que abreviaba llamandolas variables (lo
de campos no me gusta mucho), pero vamos, propiedades ya me está bien.
Salu2
Miguel Ángel
Le 11/05/2011, Ricardo Palomares Martínez a supposé :