Ошибка приведения нечетного типа с com.fasterxml.jackson(.databind) v3 при десериализации класса, производного от `java.JAVA

Программисты JAVA общаются здесь
Anonymous
Ошибка приведения нечетного типа с com.fasterxml.jackson(.databind) v3 при десериализации класса, производного от `java.

Сообщение Anonymous »

У меня возникла проблема при попытке обновить мое приложение с использования Jackson v2 до Jackson v3:
В моем приложении есть класс, который содержит ссылку на объект типа NodeProperties, класс, который является производным от `java.util.Properties`, например:

Код: Выделить всё

public class NodeProperties extends Properties {
...
}
При чтении файла JSON, содержащего сериализованную в формате JSON версию моих внутренних структур данных, я получаю следующую ошибку:

Код: Выделить всё

...
tools.jackson.databind.exc.ValueInstantiationException: Cannot construct instance of `my.application.connections.RESTConnection`, problem: Cannot cast java.util.Properties to my.application.utils.NodeProperties
at [Source: (BufferedInputStream); line: 38, column: 2]
...
Сначала я подозревал, что причина этой странной ошибки может заключаться в том, что "NodeProperties" не определяет никаких дополнительных полей (он содержит только пару удобных методов, которые я использую в своем приложении при работе со свойствами). Поэтому я добавил несколько фиктивных полей в «NodeProperties», чтобы проверить это предположение, но это не впечатлило Джексона. Это все еще не удалось с той же самой ошибкой. Таким образом, проблема НЕ в том, что NodeProperties не содержит никаких полей.
Это также НЕ случай полиморфизма, когда Джексон может не знать конкретный подтип некоторого абстрактного класса и, следовательно, создать экземпляр общего подкласса или подобного. Класс «NodeProperties» не является производным от какого-либо абстрактного класса и не реализует какой-либо интерфейс, который мог бы использоваться здесь.
Но почему тогда Jackson v3 пытается создать объект суперкласса «Properties», а не фактического производного класса «NodeProperties», как должно быть?

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