#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)) } }