隨着下面的代碼:爲什麼我得到這個錯誤「類型不匹配:不能從Serializable轉換爲T」?
Main.java
// ...
private static <T extends Serializable> T doStuff() {
Response r = ...
// ...
return r.getDetails();//Error here
}
// ...
Response.java
interface Response {
// ...
Serializable getDetails();
// ...
}
我得到這個編譯錯誤:「類型不匹配:不能從串行化轉換到T「doStuff
方法。
如果我投返回的結果,錯誤被消除。
return (T)r.getDetails();
但現在我有這樣的警告:Type safety: Unchecked cast from Serializable to T
。 @SuppressWarnings("unchecked")
會壓制警告,但我覺得這個解決方案很醜。
有沒有更好的選擇?
返回類型是T不可串行化,這就是問題所在。 – StarPinkER
你確定getDetails()在doStuff()中調用它時總是返回T嗎?如果是,或者你已經完成了類型檢查,那麼你可以抑制警告。 – StarPinkER