我正在尝试从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
的东西。
有什么想法吗?
答案 0 :(得分:1)
不确定错误发生的原因,但只需将145
转换为AnyRef
(与Object
明确相同)即可解决此问题:
aMethod.invoke(null, 145.asInstanceOf[AnyRef], "anvil", anvilPatch)
答案 1 :(得分:0)
请尝试使用Integer.TYPE
,而不要使用classOf[Int]
。这将为您提供Scala的Int
类型的类对象。
val aMethod: Method = blockClass.getDeclaredMethod("a", classOf[Int], classOf[String], classOf[Block])