Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用Scala中的Enum.valueOf?_Java_Scala_Enums_Existential Type - Fatal编程技术网

Java 如何使用Scala中的Enum.valueOf?

Java 如何使用Scala中的Enum.valueOf?,java,scala,enums,existential-type,Java,Scala,Enums,Existential Type,我需要从给定枚举类实例的字符串中获取Java枚举值。我尝试了下面这样的代码,但出现了“未绑定通配符类型”编译错误。似乎,我需要对存在类型做一些事情,比如一些{}之类的,但我不知道如何做对 val paramClass = method.getParameterTypes()(0) val value = paramClass match { case _ if classOf[Enum[_]].isAssignableFrom(paramClass) => Enum.valueOf[_

我需要从给定枚举类实例的字符串中获取Java枚举值。我尝试了下面这样的代码,但出现了“未绑定通配符类型”编译错误。似乎,我需要对存在类型做一些事情,比如一些{}之类的,但我不知道如何做对

val paramClass = method.getParameterTypes()(0)
val value = paramClass match {
  case _ if classOf[Enum[_]].isAssignableFrom(paramClass) => Enum.valueOf[_ <: Enum[_]](paramClass.asInstanceOf[Class[_ <: Enum[_]]], "MYENUM")
val paramClass=method.getParameterTypes()(0)
val值=参数类匹配{

case uif classOf[Enum[]].isAssignableFrom(paramClass)=>Enum.valueOf[p>Hmm,很难解决。我有一个可行的解决方案,但我发现它很难看。我对任何更优雅的方法都感兴趣

def enumValueOf[T <: Enum[T]](cls: Class[_], stringValue: String): Enum[_] =
  Enum.valueOf(cls.asInstanceOf[Class[T]], stringValue).asInstanceOf[Enum[_]]

val value = paramClass match {
  case _ if classOf[Enum[_]].isAssignableFrom(paramClass) => enumValueOf(paramClass, "MYENUM")
  case _ => // other cases
}
def enumValueOf[T enumValueOf(paramClass,“MYENUM”)
案例=>//其他案例
}
我认为我们需要这种复杂性的原因

我们需要编译器相信我们拥有的
类[\u]
实际上是一个
类[T]