org.springframework.http.HttpMethod теперь является классом, а не перечислением

Это правило фиксирует использование org.springframework.http.HttpMethod где код предполагает, что это enum.

В Spring Framework 6, org.springframework.http.HttpMethod был рефакторингом превращен из перечисления в стандартный класс. В то время как обычно используемые константы, такие как HttpMethod.GET и HttpMethod.POST все еще доступны, любой код, полагающийся на специфичные для перечислений функции, больше не будет компилироваться или потерпит неудачу во время выполнения.

Разработчики должны перевести свой код на совместимые с классом альтернативы, например, заменить EnumSet<HttpMethod> с Set<HttpMethod> и switch заявления с if-else блоки.

В следующем примере показано недопустимое использование, которое будет отмечено:


import org.springframework.http.HttpMethod;
import java.util.EnumSet;
public class InvalidHttpMethodUsage {
private EnumSet<HttpMethod> methods = EnumSet.of(HttpMethod.GET, HttpMethod.POST);
    public void handle(HttpMethod method) {
    switch (method) {
          case GET:
              System.out.println("GET");
              break;
        }
    }
}

В следующем примере показано правильное использование миграции:


import org.springframework.http.HttpMethod;
import java.util.Set;
public class ValidHttpMethodUsage {
private Set<HttpMethod> methods = Set.of(HttpMethod.GET, HttpMethod.POST);
    public void handle(HttpMethod method) {
    if (HttpMethod.GET.equals(method)) {
     System.out.println("GET");
        }
    }
}

Дополнительная информация: