リスナーでのタイプが問題にならない場合は、警告を取り除き、ジェネリックを有効に保つためにT
、少なくともメソッドを as として定義する必要があります。void beforeAction(final MyEvent<?> event);
型がない場合、コンパイラはそのメソッドのすべての型チェックを無効にします。
さまざまなタイプのイベントにさまざまなリスナーが必要な場合は、T
Andrew が既に指摘したように、インターフェイスにも追加する必要があります。
このようにして、手動キャスト (したがってバグ) を必要とせずに、いくつかのリスナー実装を作成できます。たとえば、次のようになります。
public class StringListener implements MyListener<String> {
void beforeAction(final MyEvent<String> event) {
...
}
}
public class NumberListener implements MyListener<Number> {
void beforeAction(final MyEvent<Number> event) {
...
}
}
このような実装がある場合はT
、型情報がリフレクション データに格納されるため、実行時に の値をクエリすることもできます。
これは、匿名クラスまたはローカル変数には当てはまらないことに注意してください。これらの場合、型の消去が行われます。