9

存在型について少し混乱します。

これは私のために働く:

def valueOf(c: Class[_], name: String) {
  type C = Class[T] forSome {type T <: Enum[T]}
  Enum.valueOf(c.asInstanceOf[C], name)
} 

しかし、これはしません:

def valueOf(c: Class[_], name: String) {
  type T = T forSome {type T <: Enum[T]}
  Enum.valueOf(c.asInstanceOf[Class[T]], name)
}

私の考えでは、両方の式は次と同等です。

Enum.valueOf(z.asInstanceOf[Class[T] forSome {type T <: Enum[T]}], name)

しかし、Scala は、それは私の頭の中だけだと言っています。

inferred type arguments [T] do not conform to method valueOf's type parameter bounds [T <: Enum[T]]
         Enum.valueOf(c.asInstanceOf[Class[T]], name)
              ^
4

1 に答える 1