ケース クラスのコンパニオン オブジェクトへの参照とt
一連のパラメーターが与えられた場合、ケース クラスseq
の新しいインスタンスを呼び出すにはどうすればよいでしょうか?
パラメータの数を自分で入力すると、クラスを作成できます。
scala> case class B(n:String,a:Int,b:Int)
defined class B
scala> val t:AnyRef = B
t: AnyRef = B
scala> val m = t.getClass.getMethods.filter{m => m.getName == "apply"}.
filterNot {_.getReturnType.getName == "java.lang.Object"}(0)
m: java.lang.reflect.Method = public B B$.apply(java.lang.String,int,int)
scala> m.invoke(t,"name",1:java.lang.Integer,2:java.lang.Integer)
res99: Object = B(name,1,2)
私が解決できなかった問題は、 のような一連の引数で invoke を呼び出すことSeq("name",1:java.lang.Integer,2:java.lang.Integer)
です。それを行う方法についてのヘルプは大歓迎です。
私はscala 2.10.0を使用しています。