2

ジェネリック型パラメーターとその型に関連するクラスオブジェクトを受け取る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) }

なぜこれが起こるのか理解していると思いますが、正しいタイプのクラスを取得してこのコードをコンパイルする方法はありますか?

4

1 に答える 1

1

どうm.erasure.asInstanceOf[Class[T]]ですか?

ちなみに、なぜ戻るのか、ではないのかについては、この質問を参照してください。erasureClass[_]Class[T]

于 2012-06-06T17:06:33.467 に答える