我有下面的類:Scala的泛型類[_]參數
class MyClass[T <: Enum[T]](val clazz: Class[T]){
def dummy = println(clazz.toString)
}
和這應該創建MyClass
對象下面的方法:
def createMyClass(clazz: Class[_]) =
if(clazz.isEnum)
new MyClass(clazz) //compile error is here
else throw new IllegalArgumentException(s"$clazz is not an enum")
但它拒絕編譯。實際上,我們通過了不符合類型邊界的Class[_]
的對象。有沒有辦法告訴編譯器我們實際上有一個代表Enum
的Class
。在Java中,我只是做投射,但我想斯卡拉有一些更好的方法來處理這種事情。
BTW,
new MyClass(clazz.asInstanceOf[Class[Enum[_]]])
無法正常工作或
我不能改變方法的簽名。
非常好,非常感謝! – stella