"Создатели конфликтующих строк: уже явно помечены ...";где авторы явно помечены? - PullRequest
0 голосов
/ 05 октября 2018

Я новичок в Джексоне и вижу эти ошибки при попытке десериализации POJO с ObjectMapper.readValue:

Создатели конфликтующих строк: уже явно пометили [метод CLASSNAME # fromString (1 params)], встречается [method CLASSNAME # valueOf (1 params)]

И fromString, и valueOf являются статическими фабричными методами с одинаковой сигнатурой.

Я не могу легко удалитьодин или другой, потому что зависимости уже используют оба, хотя для пути кода, который я тестирую, это работает, если я просто удаляю valueOf.Как уже упоминалось, я бы предпочел, чтобы это не было постоянным решением.

Ни один из методов не аннотирован @JsonCreator, а добавление @JsonCreator и аннотирование аргументов должным образом приводит к той же ошибке.

Поскольку я не вижу, как любая из функций явно помечена (потому что единственный способ, которым я знаю, это @JsonCreator), почему происходит эта ошибка, или где еще они могут быть «явно помечены»?Можно ли по-прежнему иметь оба, но затем использовать только один для десериализации?

1 Ответ

0 голосов
/ 09 октября 2018

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

До:

public static String fromString(String arg) throws Exception { ... }
public static String valueOf(String arg) throws Exception { ... }

После:

public static String fromString(String arg) throws Exception { ... }
public static String valueOf(String arg, Object... varargs) throws Exception {
    if (varargs.length > 0) {
        throw new IllegalArgumentException("Don't use these");
    }
...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...