は、私は以下のクラス持っScalaのジェネリッククラス[_]パラメータ
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[_]
のオブジェクトを渡します。実際にClass
がEnum
を表すことをコンパイラに伝える方法はありますか?
Javaでは、私はキャスティングを行うだけですが、Scalaにはこのようなことに対処するためのより良い方法があると思います。
ところで、
new MyClass(clazz.asInstanceOf[Class[Enum[_]]])
は、私はメソッドのシグネチャを変更することはできません
いずれも動作しません。
非常に、ありがとう! – stella