Сопоставление перечислений с разными именами констант и константными значениямиJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Гость
 Сопоставление перечислений с разными именами констант и константными значениями

Сообщение Гость »


Рассмотрим следующий класс:

пакет org.kurodev.progfrog.game.map; импортировать com.fasterxml.jackson.annotation.JsonValue; импортировать io.swagger.v3.oas.annotations.media.Schema; @Schema(enumAsRef = true) общественное перечисление TileType { СТЕНА("X"), ЭТАЖ("0"), ПУСТОТА("#"), ; частный окончательный строковый идентификатор; TileType (строковый идентификатор) { this.identifier = идентификатор; } public static TileType идентификация (char s) { return идентификация(String.valueOf(s)); } public static TileType идентификация (String s) { for (значение TileType: значения()) { если (value.matches(s)) возвращаемое значение; } вернуть ноль; } public static TileTypeidentifyStrict(char s) { return defineStrict(String.valueOf(s)); } public static TileTypeidentifyStrict(String s) { for (значение TileType: значения()) { если (value.matches(s)) возвращаемое значение; } throw new MapValidationException("Нераспознанная плитка: " + s); } @JsonValue публичная строка getIdentifier() { идентификатор возврата; } частные логические совпадения (String s) { вернуть s.equals(идентификатор); } } При использовании swagger для генерации yaml это выглядит так: (я показываю только часть перечисления)

Тип плитки: тип: строка перечисление: - ИКС - "0" - '#' Если я удалю аннотацию @JsonValue из метода получения, это приведет к

Тип плитки: тип: строка перечисление: - Стена - Пол - Пустота Но на самом деле я ищу следующее (или что-то подобное)

Тип плитки: тип: строка перечисление: - ИКС - "0" - '#' x-enum-имя_переменных: - СТЕНА - ПОЛ - ПУСТОТА чтобы при генерации клиента (например для машинописи) код получался

export const TileType = { СТЕНА: «Х», ЭТАЖ: '0', ПУСТОТА: '#' } как константа; вместо

export const TileType = { Х: 'Х', _0: '0', Хэш: '#' } как константа; Я уже пробовал следующие аннотации в различных созвездиях: @Schema, @JsonProperty, @JsonValue, @JsonCreator, @JsonSerialize(using = SerializerClass. class), а также написание класса ModelConverter.

@Component публичный класс CustomEnumConverter реализует ModelConverter { частный окончательный ModelResolver defaultConverter; @Autowired public CustomEnumConverter (ObjectMapper objectMapper) { this.defaultConverter = новый ModelResolver(objectMapper); } @Override разрешение публичной схемы (тип AnnotatedType, контекст ModelConverterContext, цепочка Iterator) { Модель схемы = defaultConverter.resolve(тип, контекст, цепочка); if (type.getType().getTypeName().contains(TileType.class.getName()))) { model.addExtension("x-enum-varnames", Arrays.toString(TileType.values())); } возвратная модель; } } В этом последнем подходе я был особенно уверен. Я проверил, что мне звонят, и он записывает расширение на карту, но оно не добавляется в файл .yaml...

Может ли кто-нибудь помочь? Я в недоумении. Надеюсь, этот вопрос в некоторой степени ясен.
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»