Interfaces para constantes

5 respostas
marciolx

é muito feio fazer uma interface só para definir e compartilhar constantes entre várias classes? Se sim, qual a melhor alternativa?

interface SoConstantes {
    int ZERO = 0;
    int UM = 1;
    int DOIS = 2;
}

5 Respostas

jgbt

“marciolx”:
é muito feio fazer uma interface só para definir e compartilhar constantes entre várias classes? Se sim, qual a melhor alternativa?

interface SoConstantes { int ZERO = 0; int UM = 1; int DOIS = 2; }


se é feio eu não sei nem acho, mas uso bastante…

Rafael_Steil

Nao eh “feio”, mas o Joshua Bloch, do EffectiveJava, recomenda usar uma classe normal, com construtor privado. O lance eh que, ao usar interfaces, voce estaria dando a entender que eh para alguem implementar a interface. Portando, basta voce usar

public class SoConstantes {
    private SoConstantes() {}

    public static final int ZERO = 0;
    public static final int UM = 1;
    public static final int DOIS = 2;
}

Rafael

marciolx

“Rafael Steil”:
Nao eh “feio”, mas o Joshua Bloch, do EffectiveJava, recomenda usar uma classe normal, com construtor privado. O lance eh que, ao usar interfaces, voce estaria dando a entender que eh para alguem implementar a interface. Portando, basta voce usar

obrigado :smiley:

Bani

Esse é um dos anti-patterns, segundo vários autores, então sim, é “feio” (apesar de bastante prático).
O legal é que no Java 1.5 vai ter um recurso que serve justamente para isso!
Mas por enquanto, melhor fazer como o Rafael falou.

louds

Uma dica muito importante no caso de seu Enum implementar Serializable é ter um readResolve(), caso contrario fica impossivel usar comparação por identidade nos teus tipos

Criado 22 de junho de 2004
Ultima resposta 22 de jun. de 2004
Respostas 5
Participantes 5