2015-05-28 6 views
3

Я определяю jackoson сериалайзер и добавить его в класс Java, как JsonDeserialize так:Несовместимые типы для общего

@JsonDeserialize(using = ReportFilterDeserializer.class) 

Компилятор дать эту ошибку:

error: incompatible types: Class<ReportFilterDeserializer> cannot be converted to Class<? extends JsonDeserializer<?>> 
@JsonDeserialize(using = ReportFilterDeserializer.class) 

ДЕФ в аннотации:

public Class<? extends JsonDeserializer<?>> using() default JsonDeserializer.None.class; 

Если я удаляю общий атрибут из ReportFilterDeserializer, его переданная компиляция. Я не понимаю, почему жалоба жалуется.

class ReportFilterDeserializer<T> extends JsonDeserializer<ReportFilter<T>> { 
    @Override 
    public ReportFilter<T> deserialize(JsonParser jsonParser,DeserializationContext arg1) throws IOException,JsonProcessingException { 
     return null; 
    } 
} 
+0

Как код объявления для этого сериализованного объекта выглядеть -

поведение отличается на разных JDKs (возможно Java 8 имеют проблемы? 7 против 8, например) Есть ли? – MaxZoom

+0

Как вы планируете внедрять 'deserialize'? Как вы определяете 'T' в JSON? –

+0

Вы можете посмотреть на этом: http://stackoverflow.com/questions/17979346/jackson-read-json-in-generic-list вот как я реализую. Этот вопрос относится к родовому, поэтому отложим в сторону json isssue. – user1236097

ответ

0

Это, безусловно, кажется очень странным. Единственное, о чем я могу думать, это случайное смешение комментариев Jackson 1.x и 2.x против классов (org.codehaus.jackson - 1.x, com.fasterxml.jackson 2.x).

+0

Его java 8 и я разбиваю его, чтобы разделить класс и успех wanst: @Target ({ElementType.ANNOTATION_TYPE, ElementType.METHOD, ElementType.FIELD, ElementType. TYPE, ElementType.PARAMETER}) @Retention (RetentionPolicy.RUNTIME) public @interface Test { Публичный класс > using() по умолчанию JsonDeserializer.None.class; } – user1236097

+0

Все, что я могу сказать, это то, что это больше похоже на ошибку Java 8, чем то, что делает Джексон. :-( – StaxMan

+0

... тем более, что этот код компилируется нормально на Java 7. – StaxMan

Смежные вопросы