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?