1. ホーム
  2. java

[解決済み】「型パラメータTが型Tを隠している」警告のトラブルシューティング

2022-02-01 08:22:57

質問内容

eclipse(最新版)で以下のコードを実行すると警告が表示されます。

public interface A<T> extends B<T> {
     public T getObject();
}

A'の'T'のところに警告が表示され、次のように読み取れます: "型パラメータTは型T"を隠しています。

不思議なのは、以下のコードでは、エラーも警告も発生しないことです。

public interface A extends B<T> {
     public T getObject();
}

しかし今度は、A を拡張する際に、どのようなタイプの T があります。

完全に混乱しています。なぜこのようなことが起こるのか、どなたかご存知でしょうか?

どうすればいいですか?

という名前のクラスやインターフェイスがどこかにありませんか? T を使用しているのか、それとも T を型パラメータとしてではなく具象型名として指定すること(つまり、どこか他の場所、例えば囲んでいるクラスで T は型パラメータ)?私はこれであなたの問題を再現することができます。

class T {  // A concrete type T
}

interface B<T> {  // warning: The type parameter T is hiding the type T
}

interface A<T> extends B<T> {  // warning: The type parameter T is hiding the type T
    T getObject();
}

クラスを削除すると T と表示され、消えてしまいます。