kotlin - 如何通过 JNI 实现一个 Kotlin 属性?

标签 kotlin properties java-native-interface

在 Kotlin 中,我可以使用 external 关键字将函数的实现委托(delegate)给本地代码。鉴于 Kotlin 属性只是一对 getter 和 setter 函数的语法糖,我认为也应该可以使用 native 代码实现属性。但是,我似乎无法弄清楚该怎么做。

如果我在 getset 关键字前加上 external,Kotlin 告诉我它需要一个函数体:

当然,重点是在 Kotlin 中有一个函数体。但是,如果我无论如何添加一个,Kotlin(相当意料之中)告诉我外部声明不能有主体:

我的语法错了吗?或者根本没有办法使用 JNI 实现 Kotlin 属性?

最佳答案

我找到了解决方案! 可以通过 JNI 实现属性,我只是使用了错误的语法!正确的语法是:

class Test {
    var value: Int
        external get // No parentheses or parameter list!
        external set
}

这个语法似乎还没有被记录下来。

编辑:我为已合并的 Kotlin 文档创建了一个 PR。所以现在this feature is officially documented .

关于kotlin - 如何通过 JNI 实现一个 Kotlin 属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63747448/

相关文章:

java - JNI - System.LoadLibrary() 发现错误的依赖 dll

android - Kotlin 类型不匹配编译错误 : Require Success<T>, Found MyError

kotlin - 如何在 Kotlin 中将 "prepend"字符转换为字符串

android - 关于 Json TypeToken 的 EmptyClassBlock lint 投诉

json - MVC3 JSON 序列化 : How to control the property names?

D 中的属性和引用返回值

java - "private static Class clazz = SnappyDecompressor.class"源文件中的 clazz 用于什么?

android - 如何在 listView Kotlin 中获取图像

python - 什么是属性对象?

android - 无法定位符号