Scala - 从 Java 反射调用私有静态方法

Scala - reflectively invoke private static method from Java

我正在尝试从 Java class 中获取 private static 方法并在 Scala 中调用它。这是我目前的代码:

val blockClass = classOf[Block]
val aMethod: Method = blockClass.getDeclaredMethod("a", Integer.TYPE, classOf[String], classOf[Block])
aMethod.setAccessible(true)

aMethod.invoke(null, 145, "anvil", anvilPatch)

然而,当我尝试编译它时,出现了这个错误:

Error: the result type of an implicit conversion must be more specific than AnyRef
aMethod.invoke(null, 145, "anvil", null)
                     ^

145 应该是 Java int,而 Integer.TYPE 是我唯一能想到的 Java int.

有什么想法吗?

不确定为什么会发生错误,但可以通过将 145 显式转换为 AnyRef(与 Object 相同)来简单地修复它:

aMethod.invoke(null, 145.asInstanceOf[AnyRef], "anvil", anvilPatch)

不要使用 Integer.TYPE,请尝试使用 classOf[Int]。这将为您提供 Scala 的 Int 类型的 class 对象。

val aMethod: Method = blockClass.getDeclaredMethod("a", classOf[Int], classOf[String], classOf[Block])