Junior — Middle
Qual é o resultado da compilação do companion object em Kotlin em relação ao código Java?
sobes.tech IA
Resposta da IA
Em Kotlin, companion object compila-se em Java como uma classe aninhada estática dentro da classe externa. Todos os membros do companion object tornam-se métodos e campos estáticos dessa classe aninhada.
Para facilitar a chamada a partir de Java, é criado um campo estático chamado Companion na classe externa, através do qual se pode aceder aos membros do companion object.
Por exemplo, código Kotlin:
class MyClass {
companion object {
fun foo() = "Hello"
}
}
Compila aproximadamente assim em Java:
public final class MyClass {
public static final MyClass.Companion Companion = new MyClass.Companion(null);
public static final class Companion {
public final String foo() {
return "Hello";
}
}
}
Desta forma, do Java, pode-se chamar o método assim:
String greeting = MyClass.Companion.foo();
Se no companion object forem declaradas anotações @JvmStatic, os métodos e campos correspondentes serão gerados como membros estáticos da classe externa, permitindo chamá-los diretamente sem recorrer ao Companion.