gpt4 book ai didi

java-native-interface - Kotlin 原生界面

转载 作者:行者123 更新时间:2023-12-02 12:43:43 25 4
gpt4 key购买 nike

Kotlin 是否在底层使用与 Java 相同的 native 接口(interface)实现?
它是否与 Java 中一样高效(或低效)(对象传输成本、字节流等)?

最佳答案

在底层,实现是相同的,因为它将被转换为相同的 Java 代码。这意味着它与您的 Java 代码一样高效。

给定这个带有 native 方法的 Kotlin 类 nativeMethod() :

class ExampleJni {

companion object {
init {
System.loadLibrary("example-jni")
}
}

external fun nativeMethod(): String
}

它将使用此 Java 类的“相同”实现(转换不完全相同,但不会影响 native 实现):
public class ExampleJni {

static {
System.loadLibrary("hello-jni");
}

public final native String nativeMethod();
}

编辑

为了更清楚地了解转换。如果你反编译 Kotlin 代码,你可以看到它被转换为两个类。
第一个包含 native 方法:
@dalvik.annotation.MemberClasses 
@kotlin.Metadata
public final class ExampleJni {

public static final ExampleJni$Companion Companion;

public ExampleJni() { ... }

static void <clinit>() { ... }
@org.jetbrains.annotations.NotNull
// Here you can see that the implementation is the same.
public final native String nativeMethod() { ... }
}

另一个是与 companion object相关的内部类。 .
@dalvik.annotation.EnclosingClass 
@dalvik.annotation.InnerClass
@kotlin.Metadata
public final class ExampleJni$Companion {

private ExampleJni$Companion() { ... }
public ExampleJni$Companion(DefaultConstructorMarker) { ... }
}

关于java-native-interface - Kotlin 原生界面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46648121/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com