Ei Gabriel!
Na frase "Se você precisar de um método que não precisa interagir com os atributos ou outros métodos de um objeto, criar um método estático pode ser uma solução elegante e eficiente.", quando falamos sobre interagir com atributos, estamos falando sobre modificar os valores dos atributos. Nesse sentido, quando trabalhamos com métodos estáticos, o único jeito de modificar um atributo de uma classe é se esse atributo também for estático. Isso porque, se mudamos o valor do atributo para uma instância, ele mudará para todas as outras daquela mesma classe.
No nosso método, estamos apenas pegando o valor de categoriaOmdb
, não estamos fazendo nenhuma modificação nele. Por isso, é possível usar o método estático.
Agora, falando do método em si: começamos percorrendo os valores possíveis de Categoria, usando Categoria.values()
. Isso é possível por que no enum temos um valor fixo de instâncias da classe. Caso tenha dúvida sobre isso, peço que você dê uma olhada na resposta que dei para o seu outro tópico.
Para cada uma das instâncias possíveis, verificamos se o texto recebido é igual ao atributo categoriaOmdb
, que é semelhante ao atributo de uma classe, como comentei no outro tópico. Se for igual, retornamos a instância da categoria associada ao atributo categoriaOmdb
. Caso constrário, é lançada uma exceção.
Se ainda tiver alguma questão, fique à vontade para enviar!
Espero ter ajudado e bons estudos!