Interfaz nativa Kotlin

¿Kotlin utiliza la misma implementación de interfaz nativa que Java bajo el capó? ¿Es tan eficiente (o ineficaz) como en Java (costo de transferencia de objects, flujos de bytes, etc.)?

Debajo del capó, la implementación es la misma, porque se convertirá en el mismo código Java. Significa que es eficiente como tu código Java.

Dada esta class de Kotlin con el método nativo nativeMethod() :

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

Utilizará la "misma" implementación de esta class de Java (la conversión no es exactamente la misma, pero no afectará la implementación nativa):

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

EDITAR

Para ser más claro sobre la conversión. Si descomstacks el código de Kotlin, puedes ver que se ha convertido en dos classs. El primero contiene los methods nativos:

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

El otro es la class interna relacionada con el companion object .

 @dalvik.annotation.EnclosingClass @dalvik.annotation.InnerClass @kotlin.Metadata public final class ExampleJni$Companion { private ExampleJni$Companion() { ... } public ExampleJni$Companion(DefaultConstructorMarker) { ... } } 
  • ¿Cómo conservar los nombres de los parameters para la debugging?
  • (Java + Kotlin) Autocableo: se espera al less 1 bean que califique como candidato de autowire para esta dependencia
  • Llamadas lambda anidadas en Kotlin
  • Principio de Kotlin para Android
  • ¿Cómo puedo indicar explícitamente la finalización de un Flowable en RxJava?
  • El uso de la function de lectura de AudioRecord en Kotlin no coincide con los arguments de los types de plataforma
  • Cómo detener el service de notificación en Android Oreo
  • ¿Cómo puede asignar el map asignar valor a _id en Kotlin?
  • FirebaseListAdapter ignora orderByChild () e equalTo ()
  • ¿Cómo puedo descartar la alerta después de hacer clic en el button Atrás?
  • ¿Cómo implementar readLine () !!. ToIntArray () en Kotlin?