public class TowerOfHanoi<E> {
private class Disk<T extends Comparable<E>> {
}
private class Peg<S extends Disk<T extends Comparable<E>>> extends Stack<Disk<T extends Comparable<E>>> {
}
}
通過上面的代碼,我得到了下面的編譯錯誤。如何在Java內部類中定義綁定類型參數
令牌語法錯誤 「擴展」,預計
但是,如果我改變PEG的定義如下,它的工作原理:
private class Peg<T extends Disk<? extends Comparable<E>>> extends Stack<Disk<? extends Comparable<E>>> {
}
我不想使用通配符。有沒有辦法將其更改爲命名參數?
我的理解是,Disk只會接受Comparable 而不是它的任何子類。看我的編輯。 –
不會。它會接受任何延伸「可比較」的課程。 'Disk'實現必須被定義爲'Disk >',但你可以使用'Comparable '的任何子類 –
Bohemian
我最終使Disk成爲非泛型類型。最後,這花了更多的時間,實際的算法,所以它看起來像我讓它不必要的複雜。雖然我會接受你的回答。 –