2017-11-04 51 views
2

我試圖反序列化的時間字符串到喬達日期時間一般價值,所以我定義這個解串器:通用類,不能返回

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。

我在做什麼錯?

感謝

+0

是什麼讓你認爲'T == DateTime'給出了一個字面上方的行,聲明'T擴展DateTime'。事實上,爲什麼這是通用的? –

+0

好的。我明白你的意思 –

回答

2

你的第一行應爲

public class JsonTimeDeserializer implements JsonDeserializer<DateTime> 

你不需要創建自己的變量,只是參考了現有的

當你擴展一個泛型類型,並添加新的類型變量,你也使得你的類型是通用的,這在這種情況下不是你想要的。