Ver Mensaje Individual
  #11 (permalink)  
Antiguo 01/07/2012, 19:03
Avatar de zero0097
zero0097
 
Fecha de Ingreso: abril-2010
Ubicación: México
Mensajes: 481
Antigüedad: 14 años
Puntos: 69
Respuesta: Problema con java.lang.NullPointerException

Si usas un IDE muchos tienen la opcion de DEBUG usala ys eguro encontrarás extactamente tu falla......

A la hora de que te lanza la excepcion puedes usar un ex.printStackTrace() y te dira que excepción ocurre y en que lineas se originó....

Es evidente que un objeto que tienes de clarado no lo has seteado algun valor si yo hago esto:
Código:
public class uno {
	public static void main(String[] args) {
		prueba obj;
		System.out.println(obj.metodo());
	}
}

class prueba {
	public String metodo() {
		return "El objeto esta instanciado!";
	}
}
Podria marcar un nullPointerException, por que el objeto de la clase prueba no esta creado, solo tienes la clase pero no el objeto de esa clase (no se si ese codigo lance null aki no tengo compilador haha)...

En algun momento es muy probable que al manejar tus objetos hagas lo mismo, en el caso de mi ejemplo se arregla asi:
Código:
public class uno {
	public static void main(String[] args) {
		prueba obj = new prueba();
		System.out.println(obj.metodo());
	}
}

class prueba {
	public String metodo() {
		return "El objeto esta instanciado!";
	}
}
sin embargo en algunas aplicaciones hacer el new significa crear una instancia totalmente nueva de un objeto del cual no puedes hacerlo como un GUI (mal diseñada) por que te apareceria lo mismo 2 veces, alli cuando necesitas pasar un objeto puedes usar un getter en una clase para pasar el objeto con sus valores y copiarlo a otro objeto de tu clase... ejemplo:

Código:
public class uno {
	//tengo mi variable (clase) que no esta hecha objeto aún
	//si la uso asi nomas da NullPointerException
	private static Prueba miObjeto;
	
	public static void main(String[] args) {
		//creo un obj para usar getter
		Dos obj2 = new Dos();
		
		//uso el getter para traer el valor del objeto ya instanciado, osea no lo instancio aqui si no que ya viene
		miObjeto = obj2.getObj();
		
		//tambien puede ser asi: miObjeto = (new Dos()).getObj();
		
		//ahora uso los metodos sin tener un nullPointer!
		System.out.println(miObjeto.metodo());
	}
}

class Dos {
	private Prueba obj; //el objeto no se puede acceder desde afuera
	
	//constructor
	public Dos() {
		obj = new Prueba();
	}
	
	//genero un getter para sacar el objeto desde fuera
	public Prueba getObj() {
		return obj;
	}
}

class Prueba {
	public String metodo() {
		return "El objeto esta instanciado!";
	}
}
__________________
De nada, hay te encargo +1...