[英]Difference between “<T extends Comparable<T>>” and “<T extends Comparable<Comparable<T>>>”?
[英]difference between < extends Comparable > and < extends Comparable < T > >?
我嘗試將String強制轉換為T類型,但它表示“不可轉換類型;不能將'java.lang.String'強制轉換為'T'。但是,當我從<T刪除“ <T>”時,擴展了Comparable <T>>,並修復為<T擴展Comparable>,沒關系,有什么區別?下面是代碼:
public class Graph<T extends Comparable<T>> {
public void createGraph(Scanner in) {
String line;
String[] elements;
while (in.hasNextLine()) {
line = in.nextLine();
elements = line.split("\\s+");
insertVertex((T)elements[0]); // << This is the part
}
您的圖的類型為T
例如,這意味着我可以擁有一個Person
的圖。
然后,在createGraph
,嘗試在圖形中插入String
頂點。 但是String
無法轉換為Person
。
如果要使用createGraph
方法創建Graph<String>
,則需要它使其變為static
,如下所示:
public Graph<String> createGraph(Scanner in) {
String line;
String[] elements;
Graph<String> graph = new Graph<>();
while (in.hasNextLine()) {
line = in.nextLine();
elements = line.split("\\s+");
graph.insertVertex(elements[0]);
}
// ...
// Anything else, like adding edges
// ...
return graph;
}
編輯 :當您刪除Comparable<T>
中的<T>
時,代碼編譯沒有問題的原因是它變成了Comparables的圖形(而不是人物圖形或字符串圖形),然后在向其添加一個字符串和一個Person。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.