麻烦与泛型和扩展

时间:2016-05-23 17:12:27

标签: java generics inheritance extends

所以我有一些代码可以:

abstract class Node< T extends Comparable<T>, N extends Node<T, N> >
{ ...
}

所以我说得对,在这个Node对象中使用类型T时,类型T必须具有可比性?此外,N扩展Node只是意味着当在此Node对象中使用类型N时,N必须是具有T和N属性的Node?是的,这听起来很复杂,但我的解释是否正确?谢谢!

1 个答案:

答案 0 :(得分:0)

是的,这是对的。但是......我认为Node是一个像树节点的节点,对吧?不幸的是,使用N来表示当前值,如子类型和父类型,这是一个坏主意。

abstract class Node<T extends Comparable<T>, N extends Node<T, N>> {
  private Set<N> children = new LinkedHashSet<N>();
  private N parent = null;
  private T nodeValue = null;
}

在这种情况下,您将遇到{strong>完整树的Node<Integer,?>处于活动状态的问题。树中的每个节点都必须只包含整数,因为你再次强制子级和父级只包含整数!