1
resposta

Pegar um atributo de outra classe e colocar como parâmetro em um construtor

Bom dia! Estou com uma duvida tremenda na qual não consigo achar um solução!

Estou tentando fazer que um construtor consiga pegar um atributo de uma classe e faça ele como parâmetro como mostra o código a seguir:

public class Comprador { 

    private String nome;
    private int idade;
    private EnderecoResidencial endereco;


    public Comprador(String nome, int idade, EnderecoResidencial endereco) {
        this.nome = nome;
        this.idade = idade;
        this.endereco = endereco;
    }

    public Comprador(String nome, int idade) {
        this.setNome(nome);
        this.setIdade(idade);    
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public int getIdade() {
        return idade;
    }

    public void setIdade(int idade) {
        this.idade = idade;
    }

    public EnderecoResidencial getEndereco() {
        return endereco;
    }

    public void setEndereco(EnderecoResidencial endereco) {
        this.endereco = endereco;
    }

    public void imprime() {

        System.out.println("Nome: " + getNome());
        System.out.println("Idade: " + getIdade());
        System.out.println("Endereço: " + getEndereco());

    }

}
public class EnderecoResidencial {

    private String enderecoCompleto;

    public EnderecoResidencial(String endereco) {
        this.enderecoCompleto = endereco;
    }

    public String getEnderecoCompleto() {
        return enderecoCompleto;
    }

    public void setEnderecoCompleto(String enderecoCompleto) {
        this.enderecoCompleto = enderecoCompleto;
    }

    public void imprime() {
        System.out.println("O endereço completo é: " + getEnderecoCompleto());

    }

O problema é que ao fazer isso no main está gerando o erro: (The constructor Comprador(String, int, String) is undefined.) Somente no construtor no qual eu quero pegar o endereço.

public class Teste {

    public static void main(String[] args) {

        EnderecoResidencial enderecoresidencial = new EnderecoResidencial("Rua Pauliceia");
        enderecoresidencial.imprime();

        Comprador comprador1 = new Comprador("Ari", 22, ""); //(The constructor Comprador(String, int, String) is  undefined.)
        comprador1.imprime();

        Comprador comprador2 = new Comprador("Ana", 18);
        comprador2.imprime();

        System.out.println(comprador1.getEndereco());

        System.out.println(enderecoresidencial.getEnderecoCompleto());    
    }

}

No que estou errado nesse código?

1 resposta

Boa tarde Arinelson,

Repare que ao instanciar a classe Comprador com 3 argumentos, o terceiro argumento que está sendo passado é a string "":

Comprador comprador1 = new Comprador("Ari", 22, "")

Porém, esse construtor espera como terceito argumento um objeto da Classe EnderecoResidencial. Sendo assim, para que seu código compile, você poderia passar como terceiro argumento o valor null:

Comprador comprador1 = new Comprador("Ari", 22, null)

ou instanciar um objeto EnderecoResidencial com endereço "" como você queria:

EnderecoResidencial enderecoVazio = new EnderecoResidencial("");
Comprador comprador1 = new Comprador("Ari", 22,enderecoVazio);