Es cierto en java no puedes usar switch sino tan solo en tipos primitivos, en C# si puedes usar switch con string porque entre otras cosas en C# string se considera nu tipo primitivo.Una solucion, que no se que tan factible y util sea de implementar en Java, es que crees una nueva clase que herede de String y en esa clase puedes crear una sobrecarga del operador == y del operador != ( y las demas cosas que java requiera para eso), una vez hecho eso empiezas a trabajar con tu clase nueva y ptrata de usarla en un switch como se usaria normalmente o bien solo has comparaciones con if usando == y != .
Una solucionó, que no se que tan factible y util sea de implementar en Java...