0
我有一個函數返回一個通用類K
的類型,它擴展了Comparable
接口。這個函數遞歸地調用它自己。有趣的是,當它被稱爲我收到錯誤Type mismatch: cannot convert from Comparable to K.
「類型不匹配」函數遞歸返回
public class NonEmptyTree<K extends Comparable<K>, V> implements Tree<K, V> {
Tree right;
K key;
...
public K max() throws EmptyTreeException {
try {
return right.max(); // "Type mismatch: cannot convert from Comparable to K"
} catch (EmptyTreeException e) {
return key;
}
}
...
}
改變return語句return (K) right.max();
消除錯誤併產生預期的行爲。
爲什麼演員是必要的,我怎樣才能生成代碼,這樣就不需要演員?
是''型的K' key'? – Tom 2014-11-08 02:27:27
a)[PECS](http://stackoverflow.com/q/17192772/995891):'>'b)where/how是如何定義的? –
zapl
2014-11-08 02:31:00
@Tom是的,''鍵是'K'類型。 @zapl'right'的類型是'Tree',類就是這個類的擴展。 – ahe 2014-11-08 02:35:14