2016-04-23 30 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