Java:继承泛型类并设置其类型

Chr*_*ers 4 java generics inheritance

我有一个通用的Link类(用于实现链表),如下所示:

class Link<T> {
  protected T next;

  public T getNext() { return next; }
  public void setNext(T newnext) { next = newnext; }

}  // end class Link
Run Code Online (Sandbox Code Playgroud)

现在,我希望另一个名为Card的类继承此.

class Card extends Link {
...
}
Run Code Online (Sandbox Code Playgroud)

但是,我希望它为getNext()返回一个Card对象.我该怎么做呢?

最初,Link类不是通用的,但是每次我想使用它时我都必须在getNext()上执行强制转换.我有一个看似相关的空指针问题,所以我想清除它.

rge*_*man 11

您可以指定泛型参数类型LinkCardCard:

class Card extends Link<Card>
Run Code Online (Sandbox Code Playgroud)

这种分配Card到泛型类型参数TLink.