4

LinkedHashSetに変換するための Bean を作成しようとしていEnumSetます。これは、Neo4j がこの状況で変換クラスを必要とするため必要です。私はこれまでにクラスを実装しました:

public class LinkedHashSetToEnumSet implements Converter<LinkedHashSet<Access>, EnumSet<Access>> {

    @Override
    public EnumSet<Access> convert(LinkedHashSet<Access> h) {
        EnumSet<Access> e = new EnumSet<Access>(); // error here
        // Somehow do a for loop to add all of e to h?
        return e;
    }

} 

エラーが次のコメント行// error hereにある場合、エラーが発生します。

Cannot instantiate the type EnumSet<Resource.Access>

を作成するためにここで欠けている簡単なことはありEnumSetますか?

編集:

を に変換することは可能HashSetですEnumSetか?

4

1 に答える 1

12

エラーは明らかです。EnumSetコンストラクターがありません。コンストラクターを作成する唯一の方法は、実際の列挙値を受け取るクラスの静的メソッドを使用することです。EnumSetのすべての要素でを作成する必要がある場合は、次のようにしてLinkedHashSetください。

public EnumSet<Access> convert(LinkedHashSet<Access> h) {
    return EnumSet.copyOf(h)
}

このためにクラスとメソッドを用意する必要はないと思います。必要なときにいつでも呼び出して、列挙値のcopyOf()いずれかをパラメーターとして渡すだけです。Collection

于 2013-09-18T19:09:25.437 に答える