org.springframework.http.HttpMethod jest teraz klasą, a nie wyliczeniem

Ta reguła oznacza użycie org.springframework.http.HttpMethod gdzie kod zakłada, że jest to enum.

W Spring Framework 6, org.springframework.http.HttpMethod została zmieniona z enum na standardową klasę. Podczas gdy powszechnie używane stałe, takie jak HttpMethod.GET oraz HttpMethod.POST są nadal dostępne, jakikolwiek kod polegający na funkcjach specyficznych dla wyliczeń nie będzie się już kompilował lub zawiedzie w czasie wykonywania.

Programiści muszą migrować swój kod do alternatyw kompatybilnych z klasami, takich jak zastąpienie EnumSet<HttpMethod> z Set<HttpMethod> oraz switch oświadczenia z if-else bloki.

Poniższy przykład pokazuje nieprawidłowe użycie, które zostanie oflagowane:


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

Poniższy przykład pokazuje prawidłowe zmigrowane użycie:


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");
        }
    }
}

Więcej informacji na ten temat zawierają następujące zasoby: