Что такое Class<?> Vc или JavaType valueType, используемый в конструкторе Джексона StdDeserializer
Я делаю кастомный десериализатор (расширяю StdDeserializer
) с использованием библиотеки JSON Джексона, и я не могу понять, какова цель параметров конструктора. Что такое Class<?>
или же JavaType valueType
используется для Джексона? Это просто потому, что у Java нет усовершенствованных обобщений, и Джексону нужно больше информации о обобщенном типе, к которому вы относитесь?
1 ответ
Джексон сопоставляет структуры JSON с классами Java. Так же, как JAXB отображает классы Java в XSD-ы.
Итак, это Class<?>
(или JavaType) определяет, какой класс Java принадлежит этому десериализатору. Эти классы Java могут быть чем угодно, имеющими правильные аннотации, например @JsonProperty
,
Другой вопрос: почему этот класс является общим? Это так потому что [java.lang.Class][1]
является общим. Если вы хотите сделать это правильно, то вы указываете это так:
StdDeserializer serializer = new StdDeserializer(YourClass.class);
Дело в том, что StdSerializer
не ограничивает классы, которые вы можете указать.