通用的不兼容类型

时间:2015-05-28 17:26:27

标签: java generics jackson

我定义了jackoson序列化程序并将其作为JsonDeserialize添加到java类中:

@JsonDeserialize(using = ReportFilterDeserializer.class)

编译器给出了这个错误:

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

注释的def是:

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

如果我从ReportFilterDeserializer中删除了通用的atttibute,那么它就会传递编译。我不明白为什么编码器会抱怨。

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

1 个答案:

答案 0 :(得分:0)

这当然看起来很奇怪。关于我唯一能想到的是Jackson 1.x和2.x注释与类的偶然混合(org.codehaus.jackson是1.x,com.fasterxml.jackson 2.x)。

不同JDK上的行为是否有所不同(例如7对8,可能是Java 8有问题?)