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

时间:2012-04-16 16:57:16

标签: java generics

在我的界面中:

public <T> Result query(T query)

在我的第一个子类中:

public <HashMap> Result query(HashMap queryMap)

在我的第二个子类中:

public <String> Result query(String queryStr)

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

1 个答案:

答案 0 :(得分: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) { 
    ...
  }
}