Я пытаюсь динамически вызывать функцию, используя переменную типа String, т.е. переменная будет содержать имя функции как String. Итак, мне нужно вызвать функцию с использованием этой переменной.
Итак, я использую Scala Reflection. Работает, если функция принимает тип данных как Sting, но выдает ошибку List [Map [String, Double]]
Я использовал ссылку ниже для обозначения кода
Существует ли какая-либо функция Scala, позволяющая вызывать метод, имя которого хранится в строке?
и ниже - тестовая программа, которую я пытаюсь проверить
package test
import scala.collection.immutable.Map
class DynamicaVariable {
def cat(s1: List[Map[String, Double]]) = {
println(s1)
}
}
object DynamicaVariable{
def main(args: Array[String]): Unit = {
val obj = new DynamicaVariable
val data = List(
Map("a" -> 1.0, "b" -> 267.0, "c" -> 26.0, "d" -> 2.0), Map("a" -> 1.0, "b" -> 2678.0, "c" -> 40.0, "d" -> 2.0), Map("a" -> 4.0, "b" -> 267.0, "c" -> 26.0, "d" -> 2.0), Map("a" -> 1.0, "b" -> 2678.0, "c" -> 90.0, "d" -> 17.0)
)
val functionName = "cat"
val method = obj.getClass.getMethod(functionName,data.getClass)
method.invoke(obj,data)
}
}
Моя версия для Scala 2.11.6, и я использую IntelliJ. Я также проверил версию SDK. И снял флажок «Запустить рабочий лист в процессе компиляции» под scala
Но все равно не повезло! Любая идея будет полезна. Спасибо!