GALERA ESTOU COM UM PROBLEMINHA AQUI
if(StatusSolicitacao.PENDENTESUPERIOR.equals(status)){
return getResourceString(ConstantesFerias.MSGSTATUSPENDENTESUPERIOR, null);
}
Onde StatusSolicitacao é um Enum.
o meu status está vindo de acordo… “PENDENTESUPERIOR”. Alguém poderia me explicar pq ele nunca entra nesse if???
Cara posta tua enum, você sobreescreveu o método equals?! Para mim está funcionando
public class Class1 {
enum Objetos{SOL, LUA}
public static void main(String[] args) {
validaLua(Objetos.LUA);
validaLua(Objetos.SOL);
validaSol(Objetos.LUA);
validaSol(Objetos.SOL);
}
public static void validaSol(Objetos _enum) {
System.out.println(Objetos.SOL.equals(_enum));
}
public static void validaLua(Objetos _enum) {
System.out.println(Objetos.LUA.equals(_enum));
}
}
Eu já tive esse problema, meu palpite no caso foi o seguinte:
gomesrod:
Como esse código estava em um EJB, então o objeto enum foi serializado e depois desserializado. No processo, foi criada uma nova instância do enum. Essa situação teoricamente não existe, de modo que o equals() prevê um objeto único para cada item (seria a implementação do Objetct.equals()). Comparando as duas instâncias, retornou false.
Como eu disse, isso foi apenas um chutão sem qualquer base teórica, também não tive tempo de fazer outros testes para comprovar. Também precisa ver se tem a ver com o seu caso, ou seja, se no seu programa a variável “status” também veio de uma deserialização.
EDIT:
Este tópico está duplicado: http://www.guj.com.br/posts/list/111614.java
Lá no outro está a solução, não tinha nada a ver com isso.