动态在scala中创建案例类的新实例

leo*_*leo 6 reflection scala

给定对case类伴随对象的引用t和参数序列seq如何调用case类的新实例?

当我自己键入参数的数量时,我可以创建一个类.

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)
Run Code Online (Sandbox Code Playgroud)

我无法解决的问题是使用一系列参数调用invoke Seq("name",1:java.lang.Integer,2:java.lang.Integer).任何帮助如何做到这一点非常感谢.

我使用scala 2.10.0.

leo*_*leo 5

我自己发现了它(分别在这里看到了/sf/answers/144235241/)。它是

method.invoke(t,seq: _*)
Run Code Online (Sandbox Code Playgroud)

有时把它写下来真的很有帮助;-)