4

我正在尝试制作一个用于转换LinkedHashSetEnumSet. 这是必需的,因为 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?

编辑:

是否可以将a转换HashSet为a EnumSet

4

1 回答 1

12

错误很明显:EnumSet没有构造函数,创建构造函数的唯一方法是使用类中的静态方法,它接收实际的枚举值。如果您需要使用 aEnumSet中的所有元素创建一个LinkedHashSet,请尝试以下操作:

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

我认为没有必要为此拥有一个类和一个方法,只需copyOf()在必要时调用并将任何Collection枚举值作为参数传递即可。

于 2013-09-18T19:09:25.437 回答