Autor Tema: problema java lang null pointer excepcion metodos de otro paquete  (Leído 2526 veces)

markiteps

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 1
    • Ver Perfil
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

Código: [Seleccionar]

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-
    }
       
     
 }

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
Re:problema java lang null pointer excepcion metodos de otro paquete
« Respuesta #1 en: 29 de Febrero 2016, 19:56 »
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

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".