Constante array com tipo enumerado

2 respostas
MauroOliveira

Preciso reescrever o código abaixo (que está em Delphi) para Java.
Gostaria de saber se é possível.

[color=green]// Tipo enumerado:[/color]
type TSituacao = (tSolteiro, tCasado, tDivorciado);

[color=green]// Uma constante em forma de array de string, indexado pelo enumerado:[/color]
const DESCRICAO_SITUACAO : array [ low(TSituacao) … high(TSituacao) ] of string = (‘solteiro’, ‘casado’, ‘divorciado’);

[color=green]// Variável recebendo o valor:[/color]

var sit : TSituacao;

sit := tCasado;

[color=green]// Mostra na tela a descrição:[/color]
showmessage( DESCRICAO_SITUACAO[sit] );

[color=red]Nota: O objetivo é não utilizar um swith case, continuar a utilizar o tipo enumerado e forçar os outros programadores a não esquecerem de adicionar a descrição quando forem incluídas novas situações…[/color]

2 Respostas

Lavieri
public enum EstadoCivil {
   SOLTEIRO("Solteiro"),
   CASADO("Casado"),
   DIVORCIADO("Divorciado");

   private final String estadoCivil;

   private EstadoCivil(String estadoCivil) {
      this.estadoCivil = estadoCivil;
   }
   public String getDescricao() {
      return estadoCivil;
   }
   public String toString() {
      return estadoCivil;
   }
}

Ps.: escrevi aqui mesmo o códgo, então pode conter erro

Lavieri
So pra exemplificar.... vc usa ele assim
public class Pessoa {
   private EstadoCivil estadoCivil;
   private String nome;

   public Pessoa(String nome) {
      this.nome = nome;
   }

   public EstadoCivil getEstadoCivil() {
      return estadoCivil;
   }
   public void setEstadoCivil(EstadoCivil estadoCivil) {
      this.estadoCivil = estadoCivil;
   }
}
Pessoa joao = new Pessoa("João");
joao.setEstadoCivil(EstadoCivil.CASADO);

System.out.println(joao.getEstadoCivil);

Enumeration tb pode ser transformado em Array

EstadoCivil.toArray();// axo q é assim não lembro, to sem ide agora...

tem como vc recuperar valor por nome tb.... dando o nome CASADO como referencia... e tem outras funções

Criado 27 de janeiro de 2009
Ultima resposta 27 de jan. de 2009
Respostas 2
Participantes 2