我尝试将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
}
答案 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都没有问题。