【问题标题】:Java: Inheriting a generic class and setting its typeJava:继承泛型类并设置其类型
【发布时间】:2013-04-25 22:16:34
【问题描述】:

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

class Link<T> {
  protected T next;

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

}  // end class Link

现在,我想要另一个名为 Card 的类继承自它。

class Card extends Link {
...
}

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

最初,Link 类不是通用的,但后来我每次想使用它时都必须对 getNext() 执行强制转换。我遇到了一个看似相关的空指针问题,所以我想解决这个问题。

【问题讨论】:

  • 下面的解决方案效果很好。当我解决它时,空指针问题可能会出现在另一个问题中:)。

标签: java generics inheritance


【解决方案1】:

您可以在Card 中指定Link 的泛型参数类型为Card

class Card extends Link<Card>

这会将Card 分配给来自Link 的泛型类型参数T

【讨论】:

  • 谢谢,就是这样。我很难理解泛型和继承的这种奇怪组合。效果很好。
猜你喜欢
  • 2021-10-11
  • 2011-08-19
  • 2011-08-17
  • 2015-07-04
  • 1970-01-01
  • 2018-09-27
  • 2015-09-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多