繁体   English   中英

Kotlin 可空 JNI 类型

[英]Kotlin Nullable JNI Type

如何使用Kotlin 可空类型,如“ Long”? ', '字符串? ' 等在JNI 上 JNI 类型签名代表以下信息:

Signature  |Java Type
-----------|----------------
    Z      | boolean
    B      | byte
    C      | char
    S      | short
    I      | int
    J      | long
    F      | float
    D      | double
    L      | fully-qualified-class;
    [ type | type[]
    (arg-types)| ret-type method type

但是我如何使用可为空的 ' var value:Long? '来自JNI?

科特林代码

class KtClass
{
    var value:Long? = null
}

JNI

jclass ktclass = env->FindClass("package/KtClass");
jmethodID ctorktID = env->GetMethodID(ktclass, "<init>", "()V");
env->NewObject(ktclass, ctorktID);

//J - mean Kotlin Long, but it not nullable 'Long?'
jfieldID valueID = env->GetFieldID(ktclass, "value", "J");
env->SetLongField(ktclass, valueID, NULL); //Error

Long? 在JVM上变成java.lang.Long ,所以使用

env->GetFieldID(ktclass, "value", "Ljava/lang/Long;")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM