簡體   English   中英

<extended Comparable>和<extended 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM