1
resposta

Limitar o estanciamento do new Objeto()

Na aula 6 (atividade 4) do curso de Java parte 2 é visto a modelagem do construtor de cada classe para que já seja estabelecido certos valores logo na criação daquele objeto.

No exemplo, o objeto é a classe Conta, na qual é necessario estanciar logo no inicio uma agencia e numero da conta. Existe alguma maneira da conta não ser criada caso esses valores não estejam de acordo com o padrão pré-estabelicido por estas variaveis, criando esse limitador dentro do próprio construtor da classe?

No caso eu colocaria dentro do proprio construtor um comando de "auto destruição" caso não seja valido as informações?

Obrigado pela atenção! Espero ter sido acertivo com a dúvida.

1 resposta

Boa noite Eric, tudo bem?

Neste caso para limitar a criação de um objeto através da validação dos valores pelo construtor, você pode utilizar o conceito das exceptions para isto. Veja este exemplo:

public class Conta {
    // omiti as variaveis
    public Conta(String agencia, long numeroDaConta) {
        if (agencia == null || agencia.isEmpty()) {
            throw new RuntimeException("Agencia não pode ser nula ou vazia");
        } else {
            this.agencia = agencia;
        }
        this.numeroDaConta= numeroDaConta;
}

Neste caso eu já jogo uma exceção para minha thread main, dizendo que você não pode passar uma agencia nula ou vazia.

public class TestaConta {
    public static void main(String[] args) {
        Conta conta = null;
        try {
            conta = new Conta(null, 1234);
        } catch (RuntimeException e) {
            e.printStackTrace();
        }
        System.out.println(c.agencia);
    }
}

Note que este código devolverá um erro para o usuário final, uma NullPointerException porque o objeto quando ele estava dentro do bloco try/catch não conseguiu criar o objeto porque foi passada para ele uma agencia inválida.

De uma forma mais sucinta, significa "Tente criar uma conta com está agencia e esta conta"

Espero ter esclarecido sua dúvida.

Obrigado e bons estudos!!