我试图从Java类中获取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
类型的类对象。
val aMethod: Method = blockClass.getDeclaredMethod("a", classOf[Int], classOf[String], classOf[Block])