2016-04-23 31 views
4

我有一个Java方法,需要一个Method参数:获取作为一个科特林函数的引用Java方法

void doSomethingWithMethod(Method m) { 
    ... 
} 

而且我有一个包含一个函数科特林类:

class MyClass { 

    fun myFunction() : List<Something> { 
     ... 
    } 

} 

我可以通过MyClass::myFunction获得对该函数的引用,但我没有看到将其传递给doSomethingWithMethod方法的方法。是否有与.java属性相当的值,可以将其应用于Kotlin类引用以获得与Java等效的值?

如果没有,是否有解决方法?

回答

8
import kotlin.reflect.jvm.javaMethod 

val method = MyClass::myFunction.javaMethod 

javaMethod属性不是标准科特林库的一部分,但官方kotlin-reflect.jar的一部分。它可以通过Maven的加入有以下依赖性:

<dependency> 
     <groupId>org.jetbrains.kotlin</groupId> 
     <artifactId>kotlin-reflect</artifactId> 
     <version>${kotlin.version}</version> 
    </dependency> 
+0

感谢。 javaMethod属性是kotlin-reflect.jar的一部分,它与标准库不同。虽然我知道有一个反射库,但看到javaClass是标准库的一部分,这让我认为javaMethod也会如此。 – Rich