How to prevent an object from being instantiated with a certain property?

Asked

Viewed 75 times

1

I want to prevent an object from being instantiated with a certain value (for example, prevent a "battery" object from having a negative value or above 100). How can I prevent the instance from occurring? Code example:

import java.util.Scanner;
public class Fotocopiadora{
    private String modelo; // essa string não deve ser nula
    private int quantTinta;
    private String proprietario;


    public Fotocopiadora(String modelo, String proprietario){
        this.proprietario = proprietario;
        this.quantTinta = 100;

        this.modelo = ((modelo != null) && (!modelo.isEmpty())) ? modelo : "default"; // usado como substituição ao impedimento de instância
    }
}

1 answer

1


Try this. The exception if launched will prevent the object from being instantiated.

import java.util.Scanner;
public class Fotocopiadora{
    private String modelo; // essa string não deve ser nula
    private int quantTinta;
    private String proprietario;


    public Fotocopiadora(String modelo, String proprietario, int quantTinta){

        this.proprietario = proprietario;

        if (quantTinta < 0 || quantTinta > 100) {
            throw new IllegalArgumentException("QuantTinta inválido: " + quantTinta);
        }
        this.quantTinta = quantTinta;

        this.modelo = ((modelo != null) && (!modelo.isEmpty())) ? modelo : "default"; // usado como substituição ao impedimento de instância
    }

    // Este outro construtor aproveita o construtor já existente para
    // criar uma fotocopiadora com bateria 100% carregada. Isso se
    // chama sobrecarga de construtor.
    public Fotocopiadora(String modelo, String proprietario) {
        this(modelo, proprietario, 100);
    }
}

Browser other questions tagged

You are not signed in. Login or sign up in order to post.