3

私はこのようなことをしたいと思います:

private Class<? extends Enum<?> implements IMultiBlockEnum> typeEnum;

どうすればいいですか?「implements」の代わりに「&」は機能しませんが、Eclipse も適切な説明を提供しません。

クリストファー・クリンゲ

4

4 に答える 4

5

&次のように、推測されたパラメーターの型を宣言する場合にのみ使用できます。

<T extends Enum & IMultiBlockEnum> void x(T a) {}

ワイルドカード タイプでは、タイプの交差を上限として指定することはできません。

なぜそうなのか疑問に思ったら、 の戻り値の型を考えてみてtypeEnum.newInstance()ください。それは同時に両方Enum<?>である必要があります。IMultiBlockEnum

関連する JLS の引用については、この回答を参照してください。

PSあなたの例でほとんど意味がないもう1つのことは、2つの独立したワイルドカードを使用することになりますが、明らかに同じタイプとしてキャプチャしたいということです。

于 2013-07-06T17:43:13.933 に答える
0

Enum を拡張することはできません

列挙型は設計上最終的なものです。

于 2013-07-06T17:23:21.127 に答える