java.lang.Class
親クラスのサブクラスを表すオブジェクトを持つメソッドを提供する必要があるとしましょうA
。これは、上位型がにバインドされたジェネリックパラメーターを持つ別のメソッドから行う必要がありますA
。
私はこれがうまくいくかもしれないと思った:
class A
def f(clazz: java.lang.Class[_ <: A]) = ()
def g[T <: A : Manifest] = f(classManifest[T].erasure)
しかし、そうではありません:
<console>:9: error: type mismatch;
found : java.lang.Class[_$1(in method g)] where type _$1(in method g)
required: java.lang.Class[_ <: A]
def g[T <: A : Manifest] = f(classManifest[T].erasure)
^
なぜコンパイラはそれT
が実際にのサブクラスであるかを理解できないのA
ですか?とにかく私はそれを助けることができますか?それとも、まったく異なる方法でこれにアプローチする必要がありますか?