9

私のインターフェースでは:

public <T> Result query(T query)

私の最初のサブクラスでは:

public <HashMap> Result query(HashMap queryMap)

私の2番目のサブクラスでは:

public <String> Result query(String queryStr)

1 番目のサブクラスにはコンパイル警告がまったくありませんが、2 番目のサブクラスには次のような警告があります。パラメーターがジェネリック型によって隠されていることを理解しています。しかし、正確に何が起こったのかを理解したいですか?

4

1 に答える 1

17

名前が。である型パラメーター(変数)を作成しようとしていると考えられます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) { 
    ...
  }
}
于 2012-04-16T16:59:17.057 に答える