これは私のenumを書いた方法です。javaでジェネリックを使用するENUM
public enum JobClass {
START_STOP(SchedularEvent<ExceptionNotificationsJob>.class),
EMAIL_NOTIFICATION(SchedularEvent<GenericNotificationsJob>.class);
private Class clazz;
JobClass(Class<?> clazz) {
this.clazz = clazz;
}
public Class getClazz() {
return this.clazz;
}
}
ただし、これはコンパイルされません。次のエラーが発生します。このライン
- コンストラクタJOBCLASS()で
複数のマーカーは未定義である
- ">" トークンに構文エラー、このトークン
- コンストラクタJOBCLASS()の後に予想されるバイトは未定義 あります
私はこれをどのように書くべきかわかりません。
JobClass.START_STOP.getClazz()
に電話すると私の目的はSchedularEvent<ExceptionNotificationsJob>.class
になります。これをどのように達成するのですか?
ありがとうございます!
[現在](http://openjdk.java.net/jeps/301)これはenumではできません。また、パラメータ化された型のランタイム 'Class'表現もありません。あなたが行うことができる最良の方法は、生の型のクラスリテラルを使用することです:' SchedularEvent.class'。ソリューションは実際には使用に依存しますが、インスタンスを作成するためにはクラスが必要ですか? –
ありがとう@JornVernee助けて! 私のユースケースについてさらに詳しく説明するために、私はいくつかの仕事をスケジュールするために石英を使用しています。それらのジョブのexecuteメソッドからいくつかのカスタムイベントを公開したいと思います。私はこれらのイベントを聴くために春のイベントリスナーを使用しています。リスナークラスでは、イベントを発生させたスケジューラの正確なタイプを特定したいと考えました。それはExceptionNotificationsJobかGenericNotificationsJobでしたか?それに応じて、私の残りのロジックが流れます。 –