在我的界面中:
public <T> Result query(T query)
在我的第一个子类中:
public <HashMap> Result query(HashMap queryMap)
在我的第二个子类中:
public <String> Result query(String queryStr)
第一个子类根本没有编译警告,而第二个子类有:类型参数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) { 
    ...
  }
}