首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将Java EnumSet转换为数组

将Java EnumSet转换为数组
EN

Stack Overflow用户
提问于 2014-03-05 05:25:08
回答 1查看 830关注 0票数 0

我正在试着做一个转换器:

代码语言:javascript
复制
scala>   implicit def enumSetToArray[T : ClassTag](enumSet: EnumSet[T]): Array[T] = enumSet.toArray[T](new Array[T](enumSet.size()))
<console>:9: error: type mismatch;
 found   : Array[T]
 required: Array[T with Object]
Note: T >: T with Object, but class Array is invariant in type T.
You may wish to investigate a wildcard type such as `_ >: T with Object`. (SLS 3.2.10)
         implicit def enumSetToArray[T : ClassTag](enumSet: EnumSet[T]): Array[T] = enumSet.toArray[T](new Array[T](enumSet.size()))
                                                                                                       ^
<console>:9: error: type mismatch;
 found   : Array[T with Object]
 required: Array[T]
Note: T with Object <: T, but class Array is invariant in type T.
You may wish to investigate a wildcard type such as `_ <: T`. (SLS 3.2.10)
         implicit def enumSetToArray[T : ClassTag](enumSet: EnumSet[T]): Array[T] = enumSet.toArray[T](new Array[T](enumSet.size()))
                                                                                                      ^

想法?我的理解是,我必须使用ClassTag将类从擦除中保存下来,以便反射可以实例化数组,但这样做显然会扰乱方差。

EN

回答 1

Stack Overflow用户

发布于 2014-03-05 07:45:14

你试过了吗

代码语言:javascript
复制
implicit def enumSetToArray[T <: Enum[T]](enumSet: EnumSet[T])(implicit ev: ClassTag[T]): Array[T] = enumSet.toArray[T](new Array[T](enumSet.size))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22183381

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档