Я использую отражение для получения типа параметра метода, но есть проблема с varargs. Вот мой код:В Scala, как использовать отражение, чтобы получить реальный тип параметров varargs для метода
import reflect.runtime.universe._
case class C() {
def f(x: String*) = x
}
object Main {
def main(args: Array[String]): Unit = {
val c = C()
val r = runtimeMirror(getClass.getClassLoader).reflect(c)
val x = r.symbol.typeSignature.member(newTermName("f"))
val params = x.asMethod.paramss.head.map {
_.typeSignature.typeSymbol
}
for (param <- params) {
println(param)
}
}
}
Результат:
> class <repeated>
Как я могу получить реальный тип String
? Или есть еще способ сделать это?
Спасибо за помощь, но я не могу найти метод «typeArgs» в TypeSignature, я использую SCALA 2,10 – SleePy
Этот метод был добавлен в 2.11. См. Http://stackoverflow.com/a/15597707/9204 для альтернативы 2.10. –
Работает в 2.11! Спасибо за помощь – SleePy