Eu não sei você, mas por muito tempo eu subestimei e encarei as enums no meu código apenas como simples constantes…
public enum TipoDeDocumento {
RG,
CPF,
CNPJ;
}
Isto foi um grande erro, pois enums são tão poderosas quanto objetos Java… na verdade, enums são objetos e você deveria encará-las dessa forma! Tratá-las apenas como substitutos para uma lista de constantes do tipo int ou String é ignorar todo o potencial das enums e da orientação a objetos no seu código!
Uma enum pode ser tão completa quanto um objeto Java qualquer, isto é, uma enum pode ter dados (estado) e comportamentos. O código a seguir com uma enum possuindo estas características pode te dar uma idéia sobre o que estou falando:
public enum TipoDeDocumento {
RG("RG", new ValidadorDeRg()),
CPF("CPF", new ValidadorDeCpf()),
CNPJ("CNPJ", new ValidadorDeCnpj());
private String descricao;
private Validador validador;
private TipoDeDocumento(String descricao, Validador validador) {
this.descricao = descricao;
this.validador = validador;
}
/**
* Valida número do documento
*/
public boolean valida(String numero) {
return this.validador.isValido(numero)
}
}
Talvez só olhando o código não seja fácil compreender o poder das enums, então para você entender o que eu estou falando realmente eu te convoco a dar uma olhada nesse novo post no blog da Triadworks:
>> Enums são mais que constantes
O post também aborda algumas práticas sobre orientação a objetos que deixamos de usar por não compreender que enums são objetos com dados e comportamentos.
E aí, o que achou do post?