Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Não deixar um objeto ser criado se não atender as condições do construtor (return ou exception deixa criar)

Boa noite pessoal. Pelo o que entendi, quando insiro o return dentro do construtor conforme o código abaixo, ele não executa o código logo abaixo dele.

public Conta(int numero, int agencia) {
        if(numero <=0) {
         System.out.println("Não foi possivel iniciar \n");
         return;
        }
        else {
        this.numero=numero;
        this.agencia=agencia;
        total++;
        }
    }

Mas o objeto é criado, posso chamar métodos através da sua referência.

        Conta conta1 = new Conta(153,0);
        Conta conta2 = new Conta(0,2344);
        Cliente dudu = new Cliente();
        conta1.setTitular(dudu);

        System.out.println(conta1.getNumero());

Eu li também que se eu colocar um Exception no lugar do "return", como por exemplo " throw new IllegalArgumentException();" vai ocorrer o erro mas mesmo assim o objeto será criado. Então a dúvida é, como não deixar o objeto ser criado se ele não atender o meu "if"?

Obrigado.

3 respostas
solução!

Boa noite, Eduardo! Como vai?

Se vc lançar uma Exception dentro do seu construtor o objeto não será construído! Faça o teste vc mesmo rodando esse código aqui:

public class Pessoa {
    public Pessoa() {
        throw new IllegalArgumentException("argumento invalido");
    }
}

public class TestaConstrutorPessoa {

    public static void main(String[] args) {
        Pessoa p = null;
        try {
            p = new Pessoa();
        } catch (Exception e) {
            System.out.println(p); // a saída será null
        }
    }
}

Grande abraço e bons estudos!

Entendi, muito obrigado.

Por nada, Eduardo!

Sempre que tiver qualquer dúvida é só procurar o pessoal aqui no fórum!

Grande abraço e bons estudos!