9

在我的界面中:

public <T> Result query(T query)

在我的第一个子类中:

public <HashMap> Result query(HashMap queryMap)

在我的第二个子类中:

public <String> Result query(String queryStr)

第一个子类根本没有编译警告,而第二个子类有:类型参数字符串隐藏类型字符串?我知道我的参数被泛型类型隐藏。但我想了解到底发生了什么?

4

1 回答 1

17

它认为您正在尝试创建一个类型参数——一个变量——其名称为String. 我怀疑您的第一个子类根本不 import 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) { 
    ...
  }
}
于 2012-04-16T16:59:17.057 回答