2011-03-20 8 views
3

Scalaで引数を指定してクラスの新しいインスタンスを作成する方法はありますか?例えば引数を指定したnewInstance

、のようなもの:

class C(x: String) 
manifest[C].erasure.newInstance("string") 

しかし、それがコンパイルされます。 (これはまた、安心され、この簡略化した例よりもはるかに理にかなっているコンテキストで使用されている!)あなたは(コンストラクタを使用することができますとにかくあなたはこの単純なマニフェストは必要ありませんので、

答えて

11

erasureは、タイプjava.lang.Classであります場合はclassOf[C]を使用してください)。代わりに、直接newinstanceを呼び出すには、(特派引数の型を持つ)getConstructor方法で最初のFind特派コンストラクタですることができますし、それにnewInstanceを呼び出す:

classOf[C].getConstructor(classOf[String]).newInstance("string") 
関連する問題