é 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;
}
é 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;
}
[quote=“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;
}
[/quote]
se é feio eu não sei nem acho, mas uso bastante…
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
[quote=“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
[/quote]
obrigado
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.
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