Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

514
Visualizações
¿Cómo llamo a una función escrita en una clase de kotlin, en Java?

Estoy usando tanto Kotlin como Java en mi base de código. Pero me preguntaba si hay alguna manera de hacer referencia a una función de Kotlin desde Java. Aquí está mi código kotlin: MyEvent.kt

 open class MyEvent { @Inject lateinit var myService: MyService @Inject lateinit var app: MyApp var name: String = "" var options: MutableMap<String, String> = hashMapOf() var metrics: MutableMap<String, Double> = hashMapOf() init { app.component.inject(this) } fun identify() { myService.identify() } }

Ahora, en mi llamada de clase de aplicación base "MyApplication", quiero llamar a la función de identificación. (Sé que en kotlin podemos hacer esto a través de MyEvent().identify) pero me preguntaba cómo lo hacemos en Java. ¿Cualquier pista?

¡Gracias por adelantado!

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Es exactamente lo mismo en Java. Tenga en cuenta que comparten el mismo código de bytes subyacente.

 final MyEvent myEvent = new MyEvent(); myEvent.identify();

Mire el código de bytes producido para la clase Kotlin MyEvent (descompilado)

 public class my/package/MyEvent { ... public final identify()V L0 LINENUMBER 14 L0 RETURN // Omitted myService.identify() ...

Un objeto companion se traduce a una propiedad de clase static en Java.
Por ejemplo, para este código Kotlin

 open class MyEvent { companion object { fun test() = "" } ... }

Este es el bytecode resultante.

 static <clinit>()V NEW my/package/MyEvent$Companion DUP ACONST_NULL INVOKESPECIAL my/package/MyEvent$Companion.<init> (Lkotlin/jvm/internal/DefaultConstructorMarker;)V PUTSTATIC my/package/MyEvent.Companion : Lmy/package/MyEvent$Companion; RETURN MAXSTACK = 3 MAXLOCALS = 0 }

Lo que significa, básicamente

 public class MyEvent { public static final Companion Companion = new Companion(...); ... }

Entonces, en Java accederías usando

 MyEvent.Companion.test();

Para

 open class MyEvent { object Factory { fun test() = "" } ... }

Sería, en Java

 MyEvent.Factory.INSTANCE.test();

En última instancia, Java no tiene el concepto de objetos complementarios.
En su lugar, se utilizan propiedades y métodos static .

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda