vamos la
este codigo contem varias possibilidades.
a primeira coisa é: quando vc faz "main" ou "details" pode ficar chato vc repetir as strings por varias partes do seu codigo. imagina se vc tem 8 codigos iguais porem em um deles vc escreveu "detail" sem o s no final ? Isso é dificil de descobrir, especialmente se vc tem miopia. uma solução? criar CONSTANTES que vc declara uma vez e reusa em todo o projeto. Não tem como errar pois se vc escreve errado (o nome da variavel), não vai compilar. Se vc declarou a constante com valor errado ai é mais chato, mas vc resolve de uma vez.
Agora vamos pensar no que significa main e details. eles parecem ser valores do estado scene. pode ser qualquer valor? se não podem, pq o metodo changeScreen é que apĺica restrições?
Este é um caso onde devemos pensar: se um objeto deve ser capaz de manter o seu estado consistente, talvez este objeto possa entender o que são “main” e “details”, e porque deveria rejeitar “yolo”. O seu objeto pode ser algo extremamente simples de proposito então essa validação poderia, em tese, ser movida para outro lugar (um objeto validador, etc).
a restrição de “main” e “details” foram definidas em compile time. vc socou esse codigo ai, então vc entende esse contexto e sabe que não vai haver outros valores, então entra a ideia da enumeração.
O melhor exemplo é pensar nos dias da semana, ou meses do ano. Uma enumeração é um tipo/class especial que possui um numero finito de valores ( tal qual um boolean tem apenas true e false ).
Exemplos:
https://docs.oracle.com/javase/tutorial/java/javaOO/enum.html
vc poderia criar uma enumeração Scene contendo MAIN e DETAILS
a partir de uma string “main” vc pode converte-la para maiuscula ( .toUpper ) e usar um Scene.valueOf( string maiuscula ) para converter a string para enumeracao ( lança exception se estiver errado ).
e nesse caso vc pode musar o setScene para recever um Scene ao inves de uma String, mudando o tipo do atributo.
e talvez vc não precise usar esta conversão se vc usar Scene.MAIN e Scene.DETAILS em todo o canto ( exceto se o usuario pode escrever isso )