为什么在编译期间出现类型不匹配

时间:2015-04-18 18:37:43

标签: java types polymorphism jung

我将图形(使用JUNG的Graph接口)声明为类变量:

private Graph<Knoten, Kante> _graph;

我尝试像这样初始化它:

_graph = new DirectedSparseGraph<AttrKnoten, GewKante>();

AttrKnoten扩展了Knoten,GewKante扩展了Kante(目前它们只是标记接口)。我在编译期间收到以下错误消息:

"Type mismatch: cannot convert from DirectedSpareGraph<AttrKnoten, GewKante> to Graph<Knoten, Kante>"

为什么?有没有其他方法来处理这个问题,但在声明期间省略了参数?

1 个答案:

答案 0 :(得分:5)

你不能用泛型做到这一点。

一个更简单的例子:

List<CharSequence> list = new ArrayList<String>();

这不起作用,即使String实现了CharSequence


最简单的解决方案就是:

_graph = new DirectedSparseGraph<Knoten, Kante>();

您仍然可以将AttrKnotenGewKante个对象添加到_graph


或者,如果您只想要AttrKontenGewKante个对象,请将其声明为:

private Graph<AttrKnoten, GewKante> _graph;