关于反射传递参数


#1

我打算在 kotlin 代码里反射调用

private int postSyncBarrier(long when)

代码如下:

val postSyncBarrierMethod =
        MessageQueue::class.java.getDeclaredMethod("postSyncBarrier", Long::class.java)

但是运行后报错了:

Caused by: java.lang.NoSuchMethodException: android.os.MessageQueue.postSyncBarrier [long]
at java.lang.Class.getMethod(Class.java:2072)
at java.lang.Class.getDeclaredMethod(Class.java:2050)

我记得在 Java 代码里反射时,第二个参数应该写成 long.class,但是 kotlin 里面该怎么传递呢?


#2

Long::class.javaPrimitiveType


#3

试过了刚刚,还是会同样的错误。但是,在 Java 里面调用是好的。


京ICP备16022265号-2 Kotlin China 2017 - 2018