简体   繁体   English

通用的不兼容类型

[英]Incompatible types for generic

I define jackoson serializer and add it to java class as JsonDeserialize like this: 我定义了jackoson序列化程序并将其作为JsonDeserialize添加到java类中,如下所示:

@JsonDeserialize(using = ReportFilterDeserializer.class)

The compiler give this error: 编译器给出了这个错误:

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

The def of the annotation is: 注释的def是:

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

If I remove the generic atttibute from ReportFilterDeserializer its passed compilation. 如果我从ReportFilterDeserializer中删除了通用的atttibute,它就传递了编译。 I dont understand why the complier complain. 我不明白为什么编码器会抱怨。

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

That certainly seems very odd. 这当然看起来很奇怪。 About the only thing I can think of is accidental mixing of Jackson 1.x and 2.x annotation vs classes (org.codehaus.jackson is 1.x, com.fasterxml.jackson 2.x). 关于我唯一能想到的是Jackson 1.x和2.x注释与类的偶然混合(org.codehaus.jackson是1.x,com.fasterxml.jackson 2.x)。

Does behavior differ on different JDKs (7 vs 8, for example -- maybe Java 8 has issues?) 行为在不同的JDK上是否有所不同(例如7对8,可能是Java 8有问题吗?)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM