相关疑难解决方法(0)

使用新的Scala反射API调用"动态"方法

在过去,当Invocation(一个实验性实用程序)是标准库的一部分时,可以"动态"调用方法,如下所示:

"Hello!" o 'substring(0, 4)  // to get Any back
"Hello!" oo 'substring(0, 4) // for an automatic unsafe cast to expected type
Run Code Online (Sandbox Code Playgroud)

如何使用新的Scala反射API执行此操作?

reflection scala

18
推荐指数
1
解决办法
6293
查看次数

使用java反射访问scala中的方法参数名称

我需要在我的 scala 文件之一中获取方法的参数名称。我知道,通过使用-parameter编译器选项,我可以在 Java 中完成这项工作。但是,我无法在 scala 中执行此操作,因为我在 scalac 中找不到 -parameter 选项。

我怎样才能做到这一点?我在 SO 中看到了这个答案,但这是一个旧答案。在 scala(2.11) 中是否不可能,因为此选项仅在 java8 中出现?有什么破解方法吗?

编辑:(添加示例 scala 代码)

class ReflectionTest {
  def method(name: String, id: Long, desc: String) = {
    println("Inside the method");
  }
}
Run Code Online (Sandbox Code Playgroud)

我正在尝试读取ReflectionTest类的方法参数method()

object Test extends App {
  val methods= Class.forName("com.reflection.ReflectionTest").getMethods
  methods filter(_.getName == "method") map { method =>
    val param = method.getParameters
    param.map {p =>
      println("Method : "+method.getName+" , Parameter : "+p.getName)
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

斯卡拉版本: …

reflection scala compiler-options sbt java-8

5
推荐指数
0
解决办法
624
查看次数

标签 统计

reflection ×2

scala ×2

compiler-options ×1

java-8 ×1

sbt ×1