Java泛型 - 类型参数String隐藏类型String

She*_*jie 9 java generics

在我的界面中:

public <T> Result query(T query)
Run Code Online (Sandbox Code Playgroud)

在我的第一个子类中:

public <HashMap> Result query(HashMap queryMap)
Run Code Online (Sandbox Code Playgroud)

在我的第二个子类中:

public <String> Result query(String queryStr)
Run Code Online (Sandbox Code Playgroud)

第一个子类根本没有编译警告,而第二个子类有:类型参数String隐藏类型String?我理解我的参数被泛型类型隐藏了.但是我想知道究竟发生了什么?

Lou*_*man 16

它认为你正在尝试创建一个类型参数 - 一个变量 - 其名称是String.我怀疑你的第一个子类根本不导入java.util.HashMap.

在任何情况下,如果T是您的接口的类型参数- 它可能应该是 - 那么您根本不应该包括<String>在子类中.它应该是

public interface Interface<T> {
  public Result query(T query);
}

public class Subclass implements Interface<String> {
  ...
  public Result query(String queryStr) { 
    ...
  }
}
Run Code Online (Sandbox Code Playgroud)