如何获取def
内定义的object
的参考。
object SomeObject {
def someMethod(x: String): String = s"Hello $x"
}
我想参考someMethod
函数。
到目前为止我尝试了什么:
val method = SomeObject.getClass.getDeclaredMethods.head
val function = method _
但这会返回() => java.lang.reflect.Method = <function0>
而不是(String) => (String) = <function1>
。
修改
我不知道这里的方法名称,首先我需要检索所有方法名称,然后获取它们的参考。为简单起见,我在SomeObject
中仅使用了一种方法。
TIA
答案 0 :(得分:1)
直接做吧
object SomeObject {
def someMethod(x: String): String = s"Hello $x"
}
val f = SomeObject.someMethod _ //> f : String => String = <function1>
f("World") //> res0: String = Hello World
答案 1 :(得分:1)
好吧,如果你有一个Method
对象并且你知道它对应的方法有1个参数,你只需要写method.invoke(SomeObject, _)
(method.invoke(SomeObject, _, _)
2个参数,依此类推)。请注意,您将获得一个Object => Object
函数,除了String
而不是String => String
之外,它会传递异常。
答案 2 :(得分:0)
你可以用这个:
val function = method.invoke(SomeObject, _: String)