在增强型交换机的情况下不执行任何操作

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)

如果authMethodSKIP我只是想让代码什么也不做。我不想删除这个案例。

我知道,我可以通过其他不同的方式解决这个问题,但我很好奇这是否适用于增强型交换机。

我也知道,我可以删除这个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调用),则在其后面需要一个分号。如果您使用块,例如{},则不应添加分号。