Как использовать кортеж для инициализации класса case, что происходит от отражения

#scala

#scala

Вопрос:

Я хочу использовать кортеж для инициализации класса case, полученного в результате отражения, но это не работает, пожалуйста, помогите мне :

 case class kof(argv1:String,argv2:String)

var kof=Class.forName("kof")
val ru = scala.reflect.runtime.universe
val m = ru.runtimeMirror(getClass.getClassLoader)
val classPerson = ru.typeOf[kof].typeSymbol.asClass
val cm = m.reflectClass(classPerson)
val ctor = ru.typeOf[kof].declaration(ru.nme.CONSTRUCTOR).asMethod
val ctorm = cm.reflectConstructor(ctor)
var sss=("22","ad")
val p = ctorm.tupled(sss)<!- here what I want to ask, please answer me as soon as possible, thank you!->
print (p)
  

Комментарии:

1. Я думаю, вам нужно сделать перекрестный пост в Twitter, чтобы получить экстренный ответ.

Ответ №1:

Приблизительно:

 scala> ctorm(sss.productIterator.toSeq: _*)
res3: Any = kof(22,ad)
  

Комментарии:

1. ОК. это работа. Но sss исходит из функции, это не работа;

2. var sss=(«22″,»ad») val p = ctorm(sss.productIterator.toSeq: _*)

3. это работает нормально, но sss поступают из функции, это не работает. например: var ss=new getArgs() метод val = ss.getClass.GetMethod(логика, аргументы.getClass) var sss=method.invoke(ss, аргументы)

4. класс getArgs { def GetTwo(args: Array[String]): (String, String) ={ print(args(0)) return (args(0),args(1)) } }