1

Javaでクラスを開発したい。問題は、コンストラクターが機能しないことです

クラスは次のとおりです。

public class EnumSetPlus<E extends Enum<E>> { 

//Map
private EnumSet<E> map;

//Constructor
public EnumSetPlus(){

}

マップを初期化したいのですEnumSet.noneOf(E.class)が、コンストラクターでエラーが発生します。

コンストラクタが間違っていますか?コンストラクターなしで変数マップを初期化できますか?

変数コンテキストで試しpublic EnumSetPlus<<E extends Enum<E>>> = EnumSet.noneOf(E)ましたが、うまくいきません。

map = EnumSet.noneOf(E.class)私もコンストラクターを試しましたが、どちらも機能しません。

構文かメソッドの問題だと思います

私たちを手伝ってくれますか?

よろしくお願いします!

4

1 に答える 1

4

問題は、 orEを使用するだけでは実行できないクラス インスタンスが必要なことです。パラメータ化された列挙型クラスをクラスに伝えるために、コンストラクタパラメータとして a を試してみてください。EE.classClass<E>

これはうまくいくはずです:

public EnumSetPlus(Class<E> clazz){
  map = EnumSet.noneOf(clazz);
}

問題は、コンパイラが E の実際の型 (列挙型) を認識していないため、コンパイル時にクラスを解決できないことです。EnumSetPlus提案されたパラメーターを使用するか、リフレクションを使用して決定できる具体的な型パラメーターと共にサブクラス化することにより、実行時にその情報を利用できるようにする必要があります。この単純なケースでは、リフレクション アプローチはやり過ぎになるので、パラメーター アプローチを試すことをお勧めします。

于 2011-09-06T09:25:11.883 に答える