获取对Kotlin函数的引用作为Java方法

时间:2016-04-23 15:37:47

标签: java reflection kotlin

我有一个带有Method参数的Java方法:

void doSomethingWithMethod(Method m) {
    ...
}

我有一个包含函数的Kotlin类:

class MyClass {

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

}

我可以使用MyClass::myFunction获得对该函数的引用,但我没有看到将其传递到doSomethingWithMethod方法的方法。是否有一个等价的.java属性可以应用于Kotlin类引用以获得其Java等价物?

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

2 个答案:

答案 0 :(得分:8)

REPLACE(RTRIM(LTRIM(REPLACE(fld, ',', ' '))), ' ', ',')

header('Access-Control-Allow-Origin','*'); header('Access-Control-Allow-Methods', 'GET,POST,DELETE,PUT,PATCH'); header('Access-Control-Allow-Headers','Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With'); 属性不属于标准Kotlin库,但属于官方import kotlin.reflect.jvm.javaMethod val method = MyClass::myFunction.javaMethod 的一部分。它可以通过Maven添加以下依赖项:

javaMethod

答案 1 :(得分:0)

您可以使用标准的java反射来获取kotlin中的//build the path NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsDirectory = [paths objectAtIndex:0]; NSString *path = [documentsDirectory stringByAppendingPathComponent:@"abc.mp3"]; //then you can do: NSURL* songUrl = [NSURL fileURLWithPath: path]; mediaPlayer = [[AVPlayer alloc]initWithURL:url ]; [mediaPlayer play];

Method

MyClass::class.java.getMethod("myFunction")

不需要依赖。


文档:
Method getMethod(String name, Class... parameterTypes)
Method getDeclaredMethod(String name, Class... parameterTypes)