下面的代碼是拋出編譯時異常Java泛型:類型不匹配:不能從整數轉換到K
類型不匹配:不能從整數轉換到K
我明白了什麼是K
應如何處理任何值爲Number
。
public <K extends Number> K getValue(){
Integer a = new Integer(1);
return a;//Type mismatch: cannot convert from Integer to K
}
(注:這只是一個測試代碼,把我的問題沒有給我的實際情況的不相關的細節)
編譯器是正確的。例如,在調用此方法的某個時刻,您將定義「K」的實際類型,例如「K」可以定義爲「Double」。在這種情況下,K不會是一個整數,你的代碼會出錯。這裏誤解了「擴展」的含義。換句話說,您沒有任何保證,因爲'K'擴展了Number,K將是一個整數,它可以是一個Double或者一個Float或任何其他正交類型來擴展數字。 –
如果它是''的話。它仍會給我同樣的警告信息。 –
ManishKr
[這](http://stackoverflow.com/questions/2723397/what-is-pecs-producer-extends-consumer-super)將可能有助於瞭解事情做得更好。 – biziclop