我正在尝试制作一个用于将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
?
答案 0 :(得分:10)
错误很明显:EnumSet
没有构造函数,创建一个的唯一方法是使用类中的静态方法,它们接收实际的枚举值。如果您需要使用EnumSet
中的所有元素创建LinkedHashSet
,请尝试以下操作:
public EnumSet<Access> convert(LinkedHashSet<Access> h) {
return EnumSet.copyOf(h)
}
我认为没有必要为此设置类和方法,只需在必要时调用copyOf()
并将任何Collection
枚举值作为参数传递。