有界类型作为方法参数?

Bounded type as method parameter?

我试图在抽象方法上强制执行特定的子类类型,如下所示:

public abstract class Searcher {    
  public abstract SearchResult search(<T extends SearchInput> searchInput);
}

这是为了确保 Searcher 的子类必须扩展 SearchInput 的相应子类。我知道我可以为方法的 return 类型使用有界类型,但我似乎无法将其用作方法参数。这在 Java 中可行吗?

看看 Java documentation 关于 通用方法 :

The syntax for a generic method includes a list of type parameters, inside angle brackets, which appears before the method's return type.

你需要:

public abstract class Searcher {
    public abstract <T extends SearchInput> SearchResult search(T searchInput);
}

要点是,泛型类型声明必须发生在签名部分之前。