1
resposta

Problema não esperado

public class Pessoa {

String nome; String cpf; int idade; Endereco endereco; }

public class Endereco {

String logradouro; String complemento; String numero; String bairro; String cidade; String cep;

public class Programa {

public static void main(String args[]) {

Pessoa p = new Pessoa(); p.nome = "Paulo"; p.endereco.logradouro = "Aveninda XYZ"; } }

No caso acima quando ela chama a classe... Não precisa de especificar a classe endereço, porque na composição a classe pessoa já dá acesso direto aos atributos da classe Endereço?

1 resposta

Atributos não inicializados possuem um valor padrão, no caso de referências a outras Classes , como o atributo endereco do Tipo Endereco na classe Pessoa, são inicializados com o valor null.

Então Pessoa p = new Pessoa(), endereco é null , e ao fazer p.endereco.logradouro = "Aveninda XYZ" , ao chamar qualquer método em um objeto nulo , é lançado um NullPointerException.

Você pode resolver o problema com p.endereco = new Endereco(); antes da linha p.endereco.logradouro = "Aveninda XYZ";