Почему Spring требует, чтобы имя параметра enum совпадало со значением строки? - PullRequest
0 голосов
/ 26 сентября 2019

Я создал загрузочное приложение Spring, которое принимает в заголовке параметр enum client.Если я определяю enum Client следующим образом:

public enum Client {

  app("app"),
  web("web");

  Client( String agent){
    this.agent = agent;
  }

  public final String agent;
}

, он работает успешно.Но когда я объявляю мое перечисление следующим образом:

public enum Client {

  APP("app"),
  WEB("web");

  Client( String agent){
    this.agent = agent;
  }

  public final String agent;
}

выдает ошибку java.lang.IllegalArgumentException: No enum constant com.xx.xxx.Client.app.

Кажется, что Spring пытается преобразовать строковый параметр в перечисление с тем же именем, но почему он не использует метод Client.valueOf(String) для получения перечисления Client?

Я могу объявить свой enum как при первом подходе, но хотел понять, почему Spring демонстрирует такое поведение.

1 Ответ

1 голос
/ 26 сентября 2019

Исходя из предоставленной вами информации и получаемого вами сообщения об ошибке, я думаю, вы ошиблись в константе enum со значением enum.

 APP("app")

Здесь APP - это константа перечисления, а app - это ее значение, поэтому при вызове

Client.valueOf("APP")

Возвращается - «приложение».

Ноздесь, как показывает ошибка, вы звоните

Client.valueOf("app")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...