このようにメソッドを書くと。次の警告が表示されます。
BaseEvent は raw タイプです。ジェネリック型 BaseEvent への参照はパラメーター化する必要があります
@Override
public <T extends BaseEvent> void actionPerformed(T event) { ... }
警告サインが煩わしいですが、コードは問題なく動作します。このようにコードを書くと、警告は消えます。
@Override
public <T> void actionPerformed(BaseEvent<T> event) { ... }
前のメッセージでは、それが BaseEvent のサブクラスであることを保証しません。だから私はそれを再び変更しました:
@Override
public <T extends EventObject> void actionPerformed(BaseEvent<T> event) { ... }
@Override
public <T extends BaseEvent<T>> void actionPerformed(BaseEvent<T> event) { ... }
BaseEvent クラスは、EventOBject を拡張して作成したクラスです。
public abstract class BaseEvent<T> extends EventObject
{
private String eventType;
// Constructor
public BaseEvent(Object source, String type)
{
super(source);
eventType = type;
}
public String getEventType() { return eventType; }
}
すべての方法はうまくいくようです。しかし、私はどちらがより良い解決策であるか疑問に思っていました。