В моем приложении есть класс, который содержит ссылку на объект типа NodeProperties, класс, который является производным от `java.util.Properties`, например:
Код: Выделить всё
public class NodeProperties extends Properties {
...
}
Код: Выделить всё
...
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" не является производным от какого-либо абстрактного класса и не реализует какой-либо интерфейс, который мог бы использоваться здесь.
Но почему тогда Jackson v3 пытается создать объект суперкласса "Properties", а не фактического производного класса "NodeProperties", как должно быть?
Аннотация: Я открываю этот новый поток, поскольку, ИМХО, проблема отличается от описанной в com.fasterxml.jackson(.databind) v3 имеет проблемы с десериализацией java.util.Properties (это работало в v2). В указанном приложении я описал проблему, которая, как оказалось, возникла из-за случайного использования Jackson v2 вместо запланированной версии v3 (из-за транзитивных зависимостей), а также вторую проблему, связанную с тем, что десериализация перечисления не работает должным образом. После исправления этих двух (благодаря полезным ответам), следующая проблема, с которой я столкнулся, - это странное, ошибочное создание экземпляра объекта, которое, очевидно, обрабатывается по-другому в новой версии Джексона.