Transformat String em enum

4 respostas
C

ola galera
Sequinte tenho uma enum assim

package br.cpm.databeans;
public enum Sistema {
    OUTROS("Outros"),
    GRUPO("Grupo"),
    SUBGRUPO("Sub Grupo"),
    MODELO("Modelos"),
    CONTACTB("Conta Contabil"),
    VENDEDOR("Vendedor"),
    CLIENTE("Cliente");
    private String tipo;
    private Sistema(String tipo){
        this.tipo = tipo;
    }

    public String toString(){
        return tipo;
    }
}

porem vou precisar usar esta classe a partir de uma string
String sis = “br.cpm.databeans.Sistema.CLIENTE”;

ja tentei utilizar assim
Class classe = Class.forName(sis);
mas da erro

alquem sabe como eu converto isso??

4 Respostas

P

String sistemas = br.cpm.databeans.Sistema.CLIENTE.toString(); System.out.print(sistemas);

C

oi puka, vc nao entendeu
quero a partir de uma string transormar em classe

se fosse uma classe normal eu faria assim, exemplo

String cliente = "br.cpm.databeans.Cliente";
Class clazz = Class.forname(cliente);
Cliente cli = (Cliente) clazz.getinstance();

mas como e enum nao to consequinto

E
enum Cores {
   AMARELO, AZUL, VERDE, PERTO, BRANCO, VERMELHO, MARROM
};

enum Formas {
   CIRCULO, QUADRADO, LOSANGO, PENTAGONO, RETANGULO
};

class TesteEnumReflection {
    public static void main(String[] args) throws ClassNotFoundException {
        Class<?> klass = Class.forName ("Cores");
        // Note que os enums acima não têm construtores sem parâmetros; então não podemos usar
        // klass.getInstance(). Na verdade, nem podemos chamar um construtor de uma Enum - todos
        // os valores de uma enum já foram instanciados antes do seu uso. Entretanto, se a enum tiver
        // mais de um elemento:
        Cores cor = (Cores) klass.getEnumConstants()[0];
        System.out.println (cor); // imprime "AMARELO"
        
        klass = Class.forName ("Formas");
        Formas forma = (Formas) klass.getEnumConstants()[1];
        System.out.println (forma); // imprime "QUADRADO"

        // O que você queria, na verdade, é transformar uma string em um determinado valor de uma enum.
        // Então devemos usar Enum.valueOf. Exemplo:
        Enum seiLaQueEnum = Enum.valueOf ((Class<Enum>)klass, "PENTAGONO"); 
        System.out.println (seiLaQueEnum); // imprime "PENTAGONO"
    }
}
P
public class TesteEnumString {

	public static void main(String[] args) {

		String sistemas = Sistema.CLIENTE.toString(); //VALOR ENUM		
		Class<? extends Enum> enumClass;
		String enumClassName = sistemas;
	        try {
	            enumClass = Class.forName(enumClassName).asSubclass(Enum.class);
	            System.out.println(enumClass);
	            SituacaoSelo situacao = (SituacaoSelo) enumClass.getEnumConstants()[1]; //SituacaoSelo é outro ENUM
	            System.out.println(situacao);
	        } catch (ClassNotFoundException cfne) {
	            throw new HibernateException("Enum class not found", cfne);
	        }
	}
}
Criado 16 de setembro de 2009
Ultima resposta 17 de set. de 2009
Respostas 4
Participantes 3