Bom dia amigos,
Resolvi postar aqui pois é um assunto relativamente simples, a que peço uma orientação. Estou desenvolvendo um projeto em que terei dois tipos de cliente, Pessoa Fisica e Pessoa Juridica. Da forma como o mesmo foi modelado, na base gravaríamos um campo para identificar cada um, com os valores “PF” ou “PJ”. Até aí tranquilo, hoje está tudo funcionando.
No objeto que abstrai o Cliente dentro do programa, há duas constantes:
public static final String PESSOA_FISICA = "PF";
public static final String PESSOA_JURIDICA = "PJ";
E todos os pontos onde isso é necessario ser tratado, sao usadas essas constantes. Nada anormal e tudo funciona.
Eu particularmente prefiro Enum a constantes em função da tipagem. Para esse caso, o Enum seria algo do tipo:
public enum TipoCliente
PESSOA_FISICA ("PF"), PESSOA_JURIDICA ("PJ");
private String value;
private TipoCliente(String value){
this.value = value;
}
public String getValue(){
return value;
}
Qual das duas formas os srs. consideram melhor?Ambas funcionam, claro…a alteração seria em função da clareza do código.
Com relação ao Enum, existiria alguma forma de ser criada uma instancia dele passando:
TipoCliente.valueOf("PF"); //vai dar xabu né? hehe
Obrigado.
), e é igual para todas as enums que você for criar. Validar uma string (cujo processamento é infinitamente mais lento) em todos os pontos de seu código é uma “b…”. Se não for PF ou PJ, o getInstance vai retornar null; poderia até lançar uma exceção sua, derivada de RuntimeException, por exemplo.