Olá pessoal,
eu estou querendo converter
uma string em um Enum,
mas não estou conseguindo
será que alguém poderia me
ajudar?
O meu Enum está separado de qualquer
classe:
public enum TipoUsuario {
PRODUTOR, TECNICO;
}
E na minha classe Dao eu preciso fazer
o seguinte:
public class UsuarioSistemaDao {
...
while (rs.next()) {
int id = rs.getInt(1);
String login = rs.getString(2);
String password = rs.getString(3);
tpUsuario = rs.getString(4);
//Essa linha de baixo está acusando erro não sei porque,
//Aparece o simbolo vermelho de exclamação dizendo que Cannot Find symbol
//symbol: variable TipoUsuario
//location: class dao.UsuarioSistemaDao
TipoUsuario tipoUsuario = Enum.Parse(typeof(TipoUsuario), tpUsuario, true);
list.add(new UsuarioSistema(id, login, password, tipoUsuario));
}
...
}
Será que alguém poderia me dar uma ajdua,
fazendo o favor?
Kra me desculpa… mas não entendi o pq vc quer fazer isso…
O enum foi criado para maninpular valores de mesma gama mas que são constantes…
Tds os objetos utilizam esse Enum
No que você quer fazer você pederá essa objetivo… pois para cada objeto vc tera um enum…
Isso foi o que eu entendi… se estiver errado me avise…
Jóia Flávio?
Obrigado pela ajuda,
Mas eu tenho uma classe
chamada UsuarioSistema.java
cada instância dessa classe
deve possuir sim um TipoUsuario
para me informar se aquele
usuário cadastrado é um PRODUTOR
ou TECNICO, blz?
Você ou alguém sabe como
que eu faço para converter
essa String pegada do banco
e converte-la para um Enum?
[quote=ricardocomp][code]
public class UsuarioSistemaDao {
…
while (rs.next()) {
int id = rs.getInt(1);
String login = rs.getString(2);
String password = rs.getString(3);
tpUsuario = rs.getString(4);
//Essa linha de baixo está acusando erro não sei porque,
//Aparece o simbolo vermelho de exclamação dizendo que Cannot Find symbol
//symbol: variable TipoUsuario
//location: class dao.UsuarioSistemaDao
TipoUsuario tipoUsuario = Enum.Parse(typeof(TipoUsuario), tpUsuario, true);
list.add(new UsuarioSistema(id, login, password, tipoUsuario));
}
…
}
[/code][/quote]
Tem certeza que isso é Java? :shock:
a) Não existe “ignoreCase”, conforme você pode verificar na documentação de java.lang.Enum.
A maneira mais simples, no seu caso, é verificar se o enum foi declarado todo em maiúsculas (que é o seu caso) e então passar o valor para maiúsculas. Ou seja:
b) O primeiro parâmetro de valueOf é do tipo “class<?>”. Então você precisa passar um objeto java.lang.Class (que pode ser obtido usando-se o “.class” que eu pus em negrito).
Edmarr, não faz sentido definir um construtor para uma Enum, a menos que ele seja um construtor privado, porque todas as instâncias da enum são criadas no seu carregamento. O que ele queria é fácil de resolver - o método valueOf já faz isso.
Sempre que tiverem alguma dúvida, olhem a documentação:
[quote=entanglement]Edmarr, não faz sentido definir um construtor para uma Enum, a menos que ele seja um construtor privado, porque todas as instâncias da enum são criadas no seu carregamento. O que ele queria é fácil de resolver - o método valueOf já faz isso.
Sempre que tiverem alguma dúvida, olhem a documentação:
Fih dependendo do que a pessoa quer faz sentido sim , Lembrando um enum tem modificador de acesso como se fosse uma classe , ou seja por packages e talz , creio que vc deveria ler melhor sobre o assunto para afirmar algo .