给定对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)
我无法解决的问题是使用一系列参数调用invoke,如Seq(“name”,1:java.lang.Integer,2:java.lang.Integer).任何帮助如何做到这一点非常感谢.
我使用scala 2.10.0.
解决方法
只是自己找到它(分别在这里看到它
https://stackoverflow.com/a/2060503/55070).它的
method.invoke(t,seq: _*)
有时候把它写下来确实很有帮助;-)