1 回答

TA貢獻(xiàn)1785條經(jīng)驗(yàn) 獲得超8個(gè)贊
改變這一行
public class MinPriorityQueue<T extends Comparable<T>>
對(duì)此:
public class MinPriorityQueue<T extends Comparable<? super T>>
這里的問(wèn)題是T extends ShortestPathVertex<E>
在方法中Dijkstra
,所以T
不需要Comparable
直接實(shí)現(xiàn)。但這在您的版本中是必要的MinPriorityQueue
。我的改變解決了這個(gè)問(wèn)題。
說(shuō)明:是實(shí)現(xiàn) 的子In MinPriorityQueue<T> Q = ...
T
類型。這意味著與 type 的值(它是 的超類型)相當(dāng)。但在您的版本中,您定義它必須與同一類型相當(dāng)。如果您還想接受超類型,則必須通過(guò) 定義它。ShortestPathVertex<E>
Comparable<ShortestPathVertex<E>>
T
ShortestPathVertex<E>
T
MinPriorityQueue
T
T
<? super T>
您可以嘗試(僅用于演示):在方法中Dijkstra
替換每次出現(xiàn)的T
by ShortestPathVertex<E>
。這也適用于更簡(jiǎn)單的 class 定義MinPriorityQueue
。
這種方式使用的另一個(gè)例子super
:查看Collections.binarySearch
Java類庫(kù)中的方法。
添加回答
舉報(bào)