Pelo visto o método "public static Cargo obtem(String nome" é de longa a parte mais difícil da lista. Eu gostaria apenas de fazer um comentário sobre como o ".equals" pode ser altamente traiçoeiro. Como o professor pediu, eu não vou colocar meu código aqui exatamente pelos motivos que ele mencionou, MAS dentro do método obtem, eu criei um vetor dos 4 tipos de cargo e usei o ".equals" para comparar esses vetores, um a um, com a String nome do argumento, caso ele não encontrasse nenhum dos 4, ele retornava null. O compilador não reclamou, mas pra qualquer coisa que eu digitasse na String nome, inclusive "boy", "motorista" ou os outros 2, ele retornava null. Ai eu fui por partes, coloquei na classe SimulaFolha isto "System.out.println(Cargo.BOY), e no consolhe aparecia certinho a palavra "BOY".Bom, depois de umas 3 horas fazendo mil testes e modificações (fui filtrando varias partes do codigo pra tentar achar o erro), eu acabei descobrindo que se você pedir pra ele imprimir Cargo.BOY, ele imprime a String "BOY" usando o metódo toString (que ja está automaticamente declarado pelo fato de ser enum, e sempre é igual ao nome do enum), mas quando você usa "Cargo.BOY.equals(nome)" (nome é a String declarada no inicio do método obtem) ele compara o OBJETO BOY com a String nome e nunca retorna verdadeiro ! Eu sinceramente achei isso muito "cilada", porque quando todos os cargos retornavam null, a primeira coisa que eu pensei foi "Bom, será mesmo que esse Cargo.BOY retorna uma String ?!", testei e vi que era verdade. Depois fiquei rodando em várias outras partes do código, tentando mil coisas, pra no final descobrir que era só colocar "Cargo.BOY.toString().equals(nome)" que tudo ia funcionar. Na minha cabeça, como o ".equals" é um método da classe String, quando eu pedisse para comparar Cargo.BOY com alguma coisa, ele automaticamente ia usar o método toString do objeto BOY e retornar uma String e não o objeto inteiro.
Enfim, me alonguei muito mais do que pretendia, mas fica o aviso ai pra quem for usar o ".equals"... tem que usar "toString" se não não funciona !!! -- You received this message because you are subscribed to the Google Groups "Comp 2 - Geral" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/comp2-geral?hl=en.
