Tengo el siguiente caso de cambio mejorado
@Override public MultivaluedMap<String, String> update(MultivaluedMap<String, String> incomingHeaders, MultivaluedMap<String, String> clientOutgoingHeaders) { switch (authMethod) { case BASIC -> clientOutgoingHeaders.add("Authorization", basicAuth("admin", "admin")); case BEARER -> clientOutgoingHeaders.add("Authorization", "Bearer" + " " + getAccessTokenFromKeycloak()); case SKIP -> System.out.println(); // How can I remove this? } return clientOutgoingHeaders; } donde como authMethod es un
enum AuthMethod{ BASIC, BEARER, SKIP } Si authMethod es SKIP , simplemente quiero que el código no haga nada. No quiero quitar el estuche.
Soy consciente de que podría solucionar este problema de otras maneras diferentes, pero tengo curiosidad por saber si esto funciona con un interruptor mejorado.
También soy consciente de que podría eliminar el caso SKIP . Eso simplemente no es lo que quiero, porque quiero dejar en claro que SKIP no hace nada en ese caso.
Esto es lo que he probado
case SKIP -> {}; case SKIP -> ();¿Cómo no puedo hacer nada en el caso de una declaración de cambio mejorada?
¡Esto está tan cerca!
case SKIP -> {};¡Acabas de tener un punto y coma extra! ¡Elimínelo y compila!
case SKIP -> {} Consulte la sintaxis de SwitchRule en la especificación del lenguaje Java :
SwitchStatement: switch ( Expression ) SwitchBlock SwitchBlock: { SwitchRule {SwitchRule} } { {SwitchBlockStatementGroup} {SwitchLabel :} } SwitchRule: SwitchLabel -> Expression ; SwitchLabel -> Block SwitchLabel -> ThrowStatement Observe cómo, si se trata de una expresión, como sus llamadas add , necesita un punto y coma después. Si usa un bloque, como {} , no debe agregar un punto y coma.