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) { ... } } 
  • Obtención de información de KProperty dentro de la propiedad delegada fuera de las funciones getValue () y setValue ()
  • usando Gson en kotlin para analizar json array
  • Kotlin, JPA y campos booleans
  • ¿Por qué necesita la class Preference <T> ser envuelta con object?
  • Android carga varios documentos Firerestre
  • Android - Comprobar si no nulo no funciona como se esperaba
  • ¿Cómo soluciono el error de inferencia de tipo en un Completable transformado utilizando RxLifecycle.bindToLifecycle ()?
  • Función de extensión booleana
  • ¿Deben las properties de la class en Kotlin ser privadas y cómo acceder a ellas?
  • Kotlin: cuando expresión con retorno tipo de function
  • MediaStore.Images get image completa desde el pulgar Uri / id