通用类,不能返回通用值

时间:2017-11-04 00:05:08

标签: java generics

我试图将时间字符串反序列化为Joda DateTime,所以我定义了这个反序列化器:

public class JsonTimeDeserializer<T extends DateTime> implements JsonDeserializer<T> {
    @Override
    public T deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
        DateTimeFormatter dtf = DateTimeFormat.forPattern("HH:mm");
        return json == null ? null : dtf.parseDateTime(json.getAsString());
    }
}

我得到了:

required: T
Found org.joda.time.DateTime

我不明白。 T扩展了DateTime。

我做错了什么?

由于

1 个答案:

答案 0 :(得分:2)

你的第一行应该是

i

您不需要创建自己的变量,只需引用现有的变量

当您扩展泛型类型并添加新类型变量时,您也会使您的类型变为通用类型,在这种情况下,这不是您想要的。