以Java方法获取对Kotlin函数的引用
我有一个采用Method
参数的Java方法:
void doSomethingWithMethod(Method m) { ... }
我有一个包含一个函数的Kotlin类:
class MyClass { fun myFunction() : List<Something> { ... } }
我可以使用MyClass::myFunction
获得对该函数的引用,但是我没有看到将其传递到doSomethingWithMethod
方法的方法。 是否有一个相当于.java
属性,可以应用于Kotlin类的参考,以获得其Java相当于?
如果没有,是否有解决方法?
import kotlin.reflect.jvm.javaMethod val method = MyClass::myFunction.javaMethod
javaMethod
属性不是标准Kotlin库的一部分,而是官方kotlin-reflect.jar
。 它可以通过Maven添加以下依赖项:
<dependency> <groupId>org.jetbrains.kotlin</groupId> <artifactId>kotlin-reflect</artifactId> <version>${kotlin.version}</version> </dependency>
你可以使用标准的Java反射来获取kotlin中的Method:
MyClass::class.java.getMethod("myFunction")
要么
MyClass::class.java.getDeclaredMethod("myFunction")
不需要依赖来做到这一点。
文档:
方法getMethod(String name,Class … parameterTypes)
方法getDeclaredMethod(String name,Class … parameterTypes)