Passar um ENUM como parametro,como eu faco?

Ola
preciso passar uma Enum como parametro, porem, qdo vou utilizar a funcao, ele me da erro

	public Map getListaDeEnum(Class<?> classe) { 
		Map<String, String> est = new HashMap<String, String>();
		//ENQUANTO EXISTIR VALOR NO ENUM, ELE LISTA
		for (ContatoTipo type : ContatoTipo.values()) {
			//TODO ENUM TERMINA EM "FIM", ENTAO QUANDO ENCONTRAR "FIM", ELE SAI DO LOOP
			if (type == ContatoTipo.FIM){break;};
			est.put(type.getDescr(), type.getId()); 
		} 
		return est; 
	}
	
	public Map getContatoTipoXTest() { 
		return getListaDeEnum(ContatoTipo.class); 
	}	

da forma que esta ai, funciona
porem, se eu fazer dessa forma, nao funciona

	public Map getListaDeEnum(Class<?> classe) { 
		Map<String, String> est = new HashMap<String, String>();
		//ENQUANTO EXISTIR VALOR NO ENUM, ELE LISTA
		for (classe type : classe.values()) {
			//TODO ENUM TERMINA EM "FIM", ENTAO QUANDO ENCONTRAR "FIM", ELE SAI DO LOOP
			if (type == classe.FIM){break;};
			est.put(type.getDescr(), type.getId()); 
		} 
		return est; 
	}
	
	public Map getContatoTipoXTest() { 
		return getListaDeEnum(ContatoTipo.class); 
	}	

oq posso fazer para que funciona?
a intencao é separar o metodo “getListaDeEnum” em uma outra classe, fazendo com que seja chamado nas classes que precisam dele

qualquer coisa se puder trocar a logica
todos meus ENUM tem a seguinte caracteristicas comecam com INICIO e terminam com FIM, possues os metodos getID, getDescr, como no exemplo

package br.com.krusst.precadastro.beans;

import java.io.Serializable;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.List;
import java.util.StringTokenizer;

import javax.faces.model.SelectItem;

public enum ContatoTipo implements Serializable{

    INICIO("0",""),

    RESIDENCIA("1","Residencial"),

    TRABALHO("2","Trabalho"),

    FIM("3",""),
    
    private String id;
    private String descr;    

	ContatoTipo() {  
    }  
	
	ContatoTipo(String id, String descr) {  
    	this.id = id;  
    	this.descr = descr;
    }  
    public String id() {  
    	return this.id;  
    }     
	
    public String descr() {  
    	return this.descr;  
    }  	
    
    public String getId() {
		return id;
	}

	public String getDescr() {
		return descr;
	}
    
	public void setID(String id) {
		this.id = id;
	}

	public void setDescr(String descr) {
		this.descr = descr;
	}
}

quem puder me ajudar

abs

Fala Krusst, cara uma das regras das ENUM é você ter uma classe somente pra ela assim você pode trocar mensagens por Objetos de métodos declarados nela.É exatamente como você quer fazer separando.

Blz cara
nao entendi…
da forma como quero usar, tem erro de compilação!

abs

Pelo que eu entendi deveria ficar dessa forma em uma classe separada.

public enum TipoMensageiro {

AIM( “AOL Instant Messenger” ),

ICQ( “Icq” ),

GTALK( “Google Talk” ),

MSN ( “Msn Messenger” ),

SKYPE( “Skype” ),

YAHOO( “Yahoo Messenger” );

private String descricao = null;

//passa seu parametros por contrutores

TipoMensageiro( String descricao ){

this.descricao = descricao;

}

public String getDescricao() {

return descricao;

}

}

Da forma como você declarou suas enums, cada uma delas é uma subclasse anônima da classe da enum e por isso se perde e resolve qualificar o nome da classe.

[quote=ruilima]Pelo que eu entendi deveria ficar dessa forma em uma classe separada.

public enum TipoMensageiro {

AIM( “AOL Instant Messenger” ),

ICQ( “Icq” ),

GTALK( “Google Talk” ),

MSN ( “Msn Messenger” ),

SKYPE( “Skype” ),

YAHOO( “Yahoo Messenger” );

private String descricao = null;

//passa seu parametros por contrutores

TipoMensageiro( String descricao ){

this.descricao = descricao;

}

public String getDescricao() {

return descricao;

}

}

Da forma como você declarou suas enums, cada uma delas é uma subclasse anônima da classe da enum e por isso se perde e resolve qualificar o nome da classe.[/quote]

entendi
mas ai tenho um problema
e os IDs, eu perco, ou perco o nome “completo” pois os ENUMS nao aceitam espaço entre as palavras(pelo que eu sei, ja fiz testes e nao consegui)

obrigado
abs

Ja pensou em colocar underline?

Ou um atributo “nome_completo_com_espacos_em_branco” ?

[quote=peczenyj]Ja pensou em colocar underline?

Ou um atributo “nome_completo_com_espacos_em_branco” ?[/quote]

sim, porem, ai vou ter que fazer POG, pra qdo mostrar na tela fazer a substituição do _ por " "
e ainda existem casos que vou ter poblemas por comecar com numeros
por exemplo

primeiro grau completo
1º Grau Completo
por isso que fiz a divisao em 2, sendo ID, e Descrição

abs

Tenta algo assim:

import java.util.Collections;
import java.util.HashMap;
import java.util.Map;

class MapaBlaBla {
    static final Map&lt;String, BlaBla&gt; mapa = new HashMap&lt;String, BlaBla&gt;();
}

public enum BlaBla {
    ELEM_1("foo"),
    ELEM_2("coisa"),
    ELEM_3("outra coisa");

    private final String valor;

    BlaBla(String valor) {
        this.valor = valor;
        MapaBlaBla.mapa.put(valor, this);
    }

    public String getValor() {
        return valor;
    }

    public static Map&lt;String, BlaBla&gt; getListaDeEnum() { 
        return Collections.unmodifiableMap(MapaBlaBla.mapa);
    }
}