&之间的差异extends Comparable>和< extends Comparable< T> &GT ;?

时间:2014-12-07 05:45:27

标签: java generics comparable

我尝试将String转换为T类型,但它表示" Inconvertible类型;无法投射' java.lang.String'到了'。 但是,当我删除"< T>"来自< T扩展可比较< 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
    }

1 个答案:

答案 0 :(得分:0)

您的图表属于T类型。这意味着我可以有一个Person s的图表,例如。

然后,在createGraph中,您尝试在图表中插入String个顶点。但String无法转换为Person

如果你想要一个创建createGraph的{​​{1}}方法,那么你需要它来制作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; } 中的<T>时,您的代码编译没有问题的原因是它成为可比较图表(而不是人物图表)或者字符串图表),然后向它添加字符串和Person都没有问题。