Problemas con NullPointerException

23 de febrero de 2009

Las excepciones de tipo NullPointer son las causas de excepción en tiempo de ejecución más comunes.

Todos los valores en Java, excepto las primitivas, son referencias a objetos y todos tienen un valor por defecto, el valor null, que indica que el objeto no tiene asignado ningún valor. A un objeto con valor null, no inicializado, que no referencia ningún objeto, no se le puede aplicar ningún método, siendo el resultado el lanzamiento de una excepción de tipo NullPointerException

Una excepción de tipo NullPointerException lleva asociada la información de la línea de código donde se produjo el error. El mecanismo para detectar y corregir el error es directamente ir a esta línea de código y averiguar cuál de los objetos involucrados en la operación es el que no ha sido inicializado. Una vez detectado, será necesario inicializar el valor del objeto, pero siempre teniendo cuidado de no hacerlo para simplemente eliminar el error, sino que se le debe asignar un valor acorde con la lógica propia del programa.

class Casa{
private long precio;
 
public Casa (long precio){
this.precio = precio;
}
 
public long getPrecio(){
return precio;
}
 
public class Vender {
 
private Casa casa;
 
public static void main(String[] args){
 
Vender vender = new Vender();
System.out.println(vender.casa.getPrecio());
}
}

Obviamente al ejecutar este ejemplo, se producirá un error indicando la línea concreta del error, y revisando esta línea se puede ver que la casa no está inicializada, y al no tener una referencia de la misma no se puede operar sobre el objeto y se lanzará la excepción NullPointerException.

Por ejemplo, el error se podría corregir inicializando el objeto casa incluido en el objeto Vender.

private Casa casa = new Casa(100000);