ジェネリック型パラメーターとその型に関連するクラスオブジェクトを受け取るJavaクラスがあります。
public class Foo<T> {
public Foo(Class<? extends T> type) {
...
}
}
最初は、Scalaでこれを巧妙にラッパーにできると思いました。
class Bar[T](implicit m: Manifest[T]) {
...
new Foo[T](m.erasure)
...
}
ただし、これにより、これと同様のコンパイラエラーが発生します。
error: type mismatch;
found : java.lang.Class[_$1(in value <local Bar>)] where type _$1(in value <local Bar>)
required: java.lang.Class[_ <: T]
class Bar[T](implicit m: Manifest[T]) { new Foo[T](m.erasure) }
なぜこれが起こるのか理解していると思いますが、正しいタイプのクラスを取得してこのコードをコンパイルする方法はありますか?