私は、次のクラスがありますオーバーライドメソッドは
public class A extends Exception {
}
public class B extends Email {
}
私の目標は、以下のようなこれらのクラスの両方で動作することが可能であろういくつかの戦略を実装することです。例えば
:
をpublic enum Strategy {
ACTION_1 {
@Override
public void handleAction(Class<? extends Exception > parameterThatShouldAcceptOnlyA) {
throw parameterThatShouldAcceptOnlyA;
}
},
ACTION_2 {
@Override
public void handleAction(Class<? extends Email > parameterThatShouldAcceptOnlyB) {
parameterThatShouldAcceptOnlyB.send();
}
};
public abstract void handleAction(Class<?> parameterThatShouldAcceptBoth);
}
これは、オーバーライドされたメソッドでは間違ったジェネリックによってコンパイルされません。
これを実行可能にする方法を提案してください。
のようなあなたのハンドラを実装することができます。.. )? – shmosel
明らかに、問題はあなたが 'Class'型を使っていることです。この型は 'T'型のオブジェクトではなく、Javaクラスに関連するメタ情報です。もう一つの問題は、あなたが 'enum'を生成しようとしていることです。これは不可能です。代わりに 'Strategy 'インタフェースを定義してみてください。 –