Java泛型方法声明

时间:2018-04-12 09:50:37

标签: java generics

我正在试图弄清楚Java泛型,并且我在理解这个类中声明的一些方法时遇到了一些麻烦:

abstract class Trie <T extends HasPoint> {
      abstract <T> Trie insert(T point);
      abstract <T> Trie delete(T point);
}

它可能与泛型无关,但为什么在方法名称之前需要/使用Trie。很抱歉,如果这是一个基本问题,在这里有大量的答案,但我还没有找到这个具体的事情。

2 个答案:

答案 0 :(得分:-1)

基本答案是,您需要“方法名前的Trie”。它是返回类型。 但是你应该以不同的方式使用它。

更多解释:

abstract <T> Trie insert(T point);

是定义方法的所有可能方法中最糟糕的。适当的替代方案

abstract void insert(T point);

abstract Trie<T> insert(T point);

第一个选项不会返回任何内容,只需要插入即可 第二个选项返回Trie<T>的实例(this或新实例),以便您在必要时链接方法调用。

原始代码有多个问题:

  • 重新定义T
  • 返回类型是原始的,丢失其通用信息

答案 1 :(得分:-3)

Trie这是此方法的返回类型 像abstract boolean insert(T point);一样会返回布尔值