在增强开关的情况下什么也不做

Do nothing in a case of an enhanced switch

我有以下增强型开关盒

@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;
}

其中 authMethod

enum AuthMethod{
        BASIC,
        BEARER,
        SKIP
    }

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

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

我也知道,我可以删除 SKIP 案例。这根本不是我想要的,因为我想说清楚,在那种情况下,SKIP 什么都不做。

这是我试过的

case SKIP -> {};
case SKIP -> ();

在增强型switch语句的情况下,如何什么都不做?

这太接近了!

case SKIP -> {};

你多了一个分号!删除它并编译!

case SKIP -> {}

请参阅 Java Language SpecificationSwitchRule 的语法:

SwitchStatement:
switch ( Expression ) SwitchBlock

SwitchBlock:
{ SwitchRule {SwitchRule} } 
{ {SwitchBlockStatementGroup} {SwitchLabel :} }

SwitchRule:
SwitchLabel -> Expression ; 
SwitchLabel -> Block 
SwitchLabel -> ThrowStatement

请注意,如果它是一个表达式,就像您的 add 调用一样,您需要在它后面加一个分号。如果使用块,如 {},则不应添加分号。