1
在有下面的類:理解Scala的類型推斷和extensial類型
class MyClass[T <: Enum[T]](val clazz: Class[T]){
def dummy = println(clazz.toString)
}
和方法
def createMyClass(clazz: Class[_]) =
if(clazz.isEnum)
new MyClass(clazz.asInstanceOf[Class[Enum[T] forSome { type T <: Enum[T] }]]) //error
else throw new IllegalArgumentException(s"$clazz is not an enum")
但它拒絕編譯儘管Enum[T]
滿足類型約束T <: Enum[T]
。不過,如果我寫Class[T forSome { type T <: Enum[T] }]
,它會起作用。
但爲什麼它不適用於第一種情況?