作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 java 文件中声明了一些枚举:
public class Enums {
public static enum Achievement {NORMAL, PROGRESSIVE}
public static enum Log {INFO,WARNING,ERROR}
public static enum Game {ONE_TIME, GRADUAL}}
现在在 scala 文件中,假设我有:
val key: Log = Log.INFO
val typ: Class[_] = getType(key)
我需要做的是:
Enum.valueOf(typ, "INFO")
不幸的是,这种方法会导致各种类型错误,例如
> Error:(65, 29) type mismatch;
found : Class[?0] where type ?0
required: Class[T]
val nr = Enum.valueOf(result,
^
你有什么想法吗?在这种情况下有什么方法可以创建枚举或获取其序数吗? getType 使用反射来查找类中字段的类型并进行模式匹配以进行转换。
编辑<<<<<<
简单地解决了这个问题:
val enum = typ.getEnumConstants().find(_.toString.equals("INFO"))
val ordinal = enum match {
case Some(enum) => enum.asInstanceOf[Enum[_]].ordinal()
case None =>
}
最佳答案
类的类型参数总是一个小问题。
scala> def typ[A <: Enum[A]]: Class[A] = classOf[Thread.State].asInstanceOf[Class[A]]
typ: [A <: Enum[A]]=> Class[A]
scala> Enum.valueOf[Thread.State](typ, "RUNNABLE")
res7: Thread.State = RUNNABLE
scala> Enum.valueOf(typ[Thread.State], "RUNNABLE")
res8: Thread.State = RUNNABLE
关于java - 在 Scala 中获取通用 Java Enum 的 int 值很热,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23140812/
我是一名优秀的程序员,十分优秀!