Jak deserializować pola interfejsu za pomocą obiektu objectMapper?

ObjectMapperjestreadValue(InputStream in, Class<T> valueType) funkcja wymaga klasy. Ale jak go użyć, jeśli klasa, którą przekazuję wewnętrznie, ma jakiś interfejs jako element danych.

chociaż rozumiem przyczynę tego wyjątku, ponieważ Jackson nie otrzymuje konkretnej klasy wewnętrznego interfejsu przekazanej klasy, ale moje pytanie brzmi, jak to rozwiązać? w jaki sposób mam to zmienić? Klasa, którą próbuję deserializować, to:

class BaseMetricImpl<N> implements Metric<N> {
    protected MetricValueDescriptor descriptor;
}

TutajMetricValueDescriptor jest interfejsem, więc daje mi następujący błąd: -

com.fasterxml.jackson.databind.JsonMappingException: Can not construct instance of MetricValueDescriptor, problem: abstract types either need to be mapped to concrete types, have custom deserializer, or be instantiated with additional type information
 at [Source: java.io.ByteArrayInputStream@2ede2c9f; line: 1, column: 2] (through reference chain: SingleValueMetricImpl["descriptor"])
    at com.fasterxml.jackson.databind.JsonMappingException.from(JsonMappingException.java:164)
    at com.fasterxml.jackson.databind.DeserializationContext.instantiationException(DeserializationContext.java:624)
    at com.fasterxml.jackson.databind.deser.AbstractDeserializer.deserialize(AbstractDeserializer.java:115)
    at com.fasterxml.jackson.databind.deser.SettableBeanProperty.deserialize(SettableBeanProperty.java:375)
    at com.fasterxml.jackson.databind.deser.impl.MethodProperty.deserializeAndSet(MethodProperty.java:98)
    at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:308)
    at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:121)
    at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:2793)
    at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:1989)

questionAnswers(1)

yourAnswerToTheQuestion