ale*_*der 11 java switch-statement
我有以下增强型开关盒
@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;
}
Run Code Online (Sandbox Code Playgroud)
其中 asauthMethod是 a
enum AuthMethod{
BASIC,
BEARER,
SKIP
}
Run Code Online (Sandbox Code Playgroud)
如果authMethod是SKIP我只是想让代码什么也不做。我不想删除这个案例。
我知道,我可以通过其他不同的方式解决这个问题,但我很好奇这是否适用于增强型交换机。
我也知道,我可以删除这个SKIP案例。这根本不是我想要的,因为我想澄清,SKIP 在这种情况下什么也不做。
这是我尝试过的
case SKIP -> {};
case SKIP -> ();
Run Code Online (Sandbox Code Playgroud)
在增强型 switch 语句的情况下如何什么都不做?
Swe*_*per 19
这太接近了!
case SKIP -> {};
Run Code Online (Sandbox Code Playgroud)
你只是多了一个分号!删除它并编译!
case SKIP -> {}
Run Code Online (Sandbox Code Playgroud)
请参阅Java 语言规范SwitchRule中的a 语法:
SwitchStatement:
switch ( Expression ) SwitchBlock
SwitchBlock:
{ SwitchRule {SwitchRule} }
{ {SwitchBlockStatementGroup} {SwitchLabel :} }
SwitchRule:
SwitchLabel -> Expression ;
SwitchLabel -> Block
SwitchLabel -> ThrowStatement
Run Code Online (Sandbox Code Playgroud)
请注意,如果它是一个表达式(例如您的add调用),则在其后面需要一个分号。如果您使用块,例如{},则不应添加分号。