Solucionado (ver solución)
Solucionado
(ver solución)
1
respuesta

[Duda] Null??

Hola!! Vieras que no entiendo bien porque da exception si yo le estoy asignando el valor 'diego', me podrían explicar un poco más, por favor??

Gracias :)

1 respuesta
solución!

Hola Mariel..!

Es justamente por eso, por que estas intentando acceder a un valor de un objeto que no existe, por eso Java lanzo la excepción NullPointerException.

Si vamos al código:

public class TestReferencia3 {
    public static void main(String[] args) {
        Cuenta cuentaDeDiego = new Cuenta();
        cuentaDeDiego.titular.nombre = "Diego";
        System.out.println(cuentaDeDiego.titular.nombre);
    }
}

Vemos que el objeto titular de la clase Cuenta no ha sido inicializado, por lo que intentar acceder a su atributo nombre generará una excepción de NullPointerException.

.

Cuando se lanza una NullPointerException, significa que el programa está tratando de acceder a un objeto que no existe en la memoria o que no ha sido asignado correctamente.

.

Este error suele ser causado por olvidar inicializar un objeto antes de usarlo o por intentar usar un objeto que ha sido eliminado o no ha sido creado adecuadamente.

Si vamos a la clase Cuenta, vemos los atributos sin inicializar, pero también vemos un objeto titular de la clase Cliente sin inicializar.

class Cuenta {
    double saldo;  //sin inicializar
    int agencia;  // sin inicializar
    int numero; // sin inicializar
    Cliente titular; //sin inicializar y titular es un Objeto de la clase Cliente.
}

En Java, cuando creas una instancia de una clase, los atributos de esa clase se inicializan automáticamente con valores predeterminados si no se les asigna explícitamente un valor.

.

Volvamos a la clase TestReferencia3 y veamos como solucionar ese problema:

public class TestReferencia3 {

    public static void main(String[] args) {
        Cuenta cuentaDeDiego = new Cuenta();

        Cliente cliente = new Cliente(); //Se crea un objeto de la clase Cliente llamado cliente
        cuentaDeDiego.titular = cliente; // Se asigna el objeto cliente al atributo titular
                                        // de la cuentaDeDiego
        cuentaDeDiego.titular.nombre = "Diego"; // Se le asigna "Diego" al atributo nombre del
                                                // objeto titular de CuentaDeDiego

        System.out.println(cuentaDeDiego.titular.nombre);
    }
}

Lo cuál dara diego:

Diego

Espero haber aclarado tu duda..!