2

ユーザーがコマンドラインでクラスへのパスを指定するプログラムを書いています。Class次の方法でオブジェクトに変換します。

val clazz = Class.forName(args([0]))

MyParametric[T]単一の型パラメーターを持つパラメトリック クラスがあります。次に、別の Classタイプを作成Class[ParamatricType[clazz]して、それをメソッドに渡すことができるようにします。たとえば、次のようなことをしたい

myMethod(classOf[ParametricType[clazz]])

しかし、それは許可されていません。動的に指定された型パラメーターを使用してパラメトリック型をインスタンス化するにはどうすればよいですか?

4

4 に答える 4

1

ParametricTypeの type パラメータは消去されるため、 の値はclassOf[ParametricType[_]]プラグインに関係なく同じになります_( を含む_)。

タイプは同じではありclassOfませんが、それは消去されません (コンパイラーはコンパイル時に追跡します)。singleton type を参照できますが、それでclazz.type何が得られるかは明確ではありません。

于 2015-11-30T19:59:47.830 に答える
1

への引数として使用したい場合はclassOf、型パラメータさえ必要ありません。_型パラメータは Scala では実行時に消去されるため、そのまま使用できます。

myMethod(classOf[ParametricType[_]])
于 2015-11-30T19:57:25.847 に答える