Javagenerics – 类型参数String隐藏类型String

在我的界面中:

public  Result query(T query) 

在我的第一个子类中:

 public  Result query(HashMap queryMap) 

在我的第二个子类中:

 public  Result query(String queryStr) 

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

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

在任何情况下,如果T是您的接口的类型参数 – 它可能应该是 – 那么您根本不应该在子类中包含 。 它应该是

 public interface Interface { public Result query(T query); } public class Subclass implements Interface { ... public Result query(String queryStr) { ... } }