Собственный интерфейс Kotlin

Использует ли Kotlin ту же самую встроенную реализацию интерфейса, что и Java под капотом? Является ли он эффективным (или неэффективным), как в Java (стоимость передачи объектов, потоки байтов и т. Д.)?

Под капотом реализация такая же, потому что она будет преобразована в тот же Java-код. Это означает, что он эффективен как ваш Java-код.

Учитывая этот класс Kotlin с нативным методом nativeMethod() :

 class ExampleJni { companion object { init { System.loadLibrary("example-jni") } } external fun nativeMethod(): String } 

Он будет использовать «ту же» реализацию этого Java-класса (преобразование не совсем то же самое, но оно не повлияет на собственную реализацию):

 public class ExampleJni { static { System.loadLibrary("hello-jni"); } public final native String nativeMethod(); } 

РЕДАКТИРОВАТЬ

Чтобы быть более понятным о конверсии. Если вы декомпилируете код Котлина, вы можете увидеть, что он преобразован в два класса. Первый содержит собственные методы:

 @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) { ... } }