Foros aprenderaprogramar.com
Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: markiteps en 27 de Febrero 2016, 22:56
-
Buenas noches, perdonad por molestar pero ya estoy algo desesperado, no se si alguien podria echarme una mano, vereis esta clase que os muestro debe llamar a los metodos de una interfaz que esta en otro paquete diferente de blue J, pero siempre que llama a cuaquier metodo de controlador salta el error de java null pointer excepcion, creo que es por algo de no inicializar el controlador, pero tampoco se como inicializarlo
package gestorempresas.cliente;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Scanner;
//import gestorempresas.empresas.InterfazControladorEmpresas;
import gestorempresas.empresas.*;
//import gestorempresas.*;
/**
* Write a description of class ClienteGestorEmpresas here.
*
* @author (your name)
* @version (a version number or a date)
*/
public class ClienteGestorEmpresas
{
static InterfazControladorEmpresas controlador;//creo objeto clase interfaz
/**
* Constructor for objects of class ClienteGestorEmpresas
*/
public static void main(String[] args) {
ClienteGestorEmpresas miObjeto = new ClienteGestorEmpresas();
String opcion="";
String cif ="";
String nombre ="";
String direccion ="";
Scanner in = new Scanner(System.in);
List<Empresa> lista;
do{//bucle infinito, en el switch cuando pulsemos t sale del programa
System.out.println("Menu del cliente: ");
System.out.println("l - listar empresas ");
System.out.println("i - mostrar informacion detallada de una empresa");
System.out.println("c - crear una nueva empresa");
System.out.println("m - modificar datos de una empresa existente");
System.out.println("b - borrar una empresa");
System.out.println("t - terminar");
opcion = in.next();
switch(opcion)
{
case "l":
lista = controlador.recuperarEmpresas();
if (!lista.isEmpty()){
int i;
for(i=0;i<lista.size();i++)//recorro la lista
{
Empresa enterprise = lista.get(i); //obtengo un objeto de tipo empresa de la lista
System.out.println(enterprise.verDescripcionBreve());//iprimo por pantalla datos
}
}
else{
System.out.println("ERROR!!!!!!!!");
}
break;
case "i": System.out.println("Introduzca el Cif de la empresa: ");
cif = in.next();
try {Empresa empresa = controlador.recuperarEmpresa(cif);
System.out.println(empresa.verDescripcionBreve());
}catch(ExcepcionEmpresas e){
System.out.println("Ya existe una empresa con mismo CIF");
}
break;
case "c": System.out.println("Introduzca el cif de la empresa: ");
cif = in.next();
System.out.println("Introduzca el nombre de la empresa: ");
nombre = in.next();
System.out.println("Introduzca la direccion de la empresa: ");
direccion = in.next();
try { controlador.crearEmpresa(cif,nombre,direccion);
}catch(ExcepcionEmpresas e){
System.out.println("Ya existe una empresa con mismo CIF");
}
break;
case "m": System.out.println("Introduzca el CRI de la empresa: ");
cif = in.next();
System.out.println("Introduzca el nombre de la empresa: ");
nombre = in.next();
System.out.println("Introduzca la direccion de la empresa: ");
direccion = in.next();
try { controlador.modificarEmpresa(cif,nombre,direccion);
}catch(ExcepcionEmpresas e){
System.out.println("No hay empresas que coincidan con el valor de CIF introducido");
}
break;
case "b": System.out.println("Introduzca el cif de la empresa");
cif = in.next();
try { controlador.borrarEmpresa(cif);
}catch(ExcepcionEmpresas e){
System.out.println("Ya existe una empresa con mismo CIF");
}
break;
case "t": System.exit(1);
break;
default: System.out.println("La entrada no es correcta.");
}
}while(true);//fin del bucle while-
}
}
-
Hola markiteps.
static InterfazControladorEmpresas controlador; no realiza la creación de un objeto de la clase de la interfaz, sino que declara un objeto de la clase (aún no creado ni inicializado). Para crear el objeto debes crear una instancia de un tipo de dato que implemente el tipo definido por la interface.
Dado que el objeto no se ha creado, no puedes invocarlo haciendo uso de lista = controlador.recuperarEmpresas(); porque te generará un error java lang null pointer exception
Para tener claros todos los conceptos relacionados con interfaces, tipos estáticos y dinámicos, etc. es recomendable seguir el curso http://aprenderaprogramar.com/index.php?option=com_content&view=category&id=68&Itemid=188
Saludos