如何在Java中将LinkedHashSet转换为EnumSet?

时间:2013-09-18 19:07:07

标签: java spring set neo4j javabeans

我正在尝试制作一个用于将LinkedHashSet转换为EnumSet的bean。这是必需的,因为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

1 个答案:

答案 0 :(得分:10)

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

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

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