2つの簡単なメソッドでクラスを作成したいと思います。最初に、処理する必要がある型を登録します。 2番目は登録されたすべてのタイプを処理します。私が持っている問題は、登録/処理したいクラスに一定の制限があることです。実装してインターフェイスを持つEnumでなければなりません。Java:インタフェースを実装するEnumのコレクションを定義する方法
保存に使用するコレクションを定義する方法登録された型。私のコードの簡略化されたバージョンは次のとおりです:
public class Example {
interface MyType {
// Add methods here
}
private List<what-goes-here?> store = new ArrayList<>();
public <T extends Enum<?> & MyType> void registerType(@Nonnull Class<T> type) {
store.add(type);
}
public void processAll() {
for (T t : store) { // Where do I define T?
// process t
}
}
}
コードが矛盾しています。 'register'では、' process'の中の 'Class'オブジェクトをリストに格納していますが、' T'インスタンスがそこから出てくることを期待しています。それ以外に、これらのオブジェクトが 'enum'であることがなぜ重要なのでしょうか?そのプロパティに依存するようには見えないし、それがどのように有用な財産になるか想像するのは難しいです。 – Holger
@Holgerこんにちは、彼はすべての列挙定数インスタンスを処理したいと思います。 –
@ holi-java質問者は私たちに彼らの意図について推測する必要はありません。彼らが実際にやりたいことに応じて、もっと良い解決策がたくさんあるでしょう。 – Holger