Obtener class acompañante en un object complementario

¿Hay alguna manera de get el javaClass de la class acompañante dentro de un object complementario sin saber su nombre?

Supongo que podría getlo haciendo algo como esto:

 open class TestClass { companion object { init { val clazz = Class.forName(this::class.java.canonicalName.removeSuffix(".Companion")) } } } 

Sin embargo, esto no funciona para la class InheritingClass : TestClass() . Todavía me daría TestClass, no InheritingClass.

Esperaba algo más sencillo como this::class.companionClass .

La class compañera no tiene ninguna reference a la class real como se puede ver en este bytecode

 public final class TestClass$Companion { private TestClass$Companion() { // <init> //()V <localVar:index=0 , name=this , desc=LTestClass$Companion;, sig=null, start=L1, end=L2> L1 { aload0 // reference to self invokespecial java/lang/Object <init>(()V); return } L2 { } } public TestClass$Companion(kotlin.jvm.internal.DefaultConstructorMarker arg0) { // <init> //(Lkotlin/jvm/internal/DefaultConstructorMarker;)V <localVar:index=0 , name=this , desc=LTestClass$Companion;, sig=null, start=L1, end=L2> <localVar:index=1 , name=$constructor_marker , desc=Lkotlin/jvm/internal/DefaultConstructorMarker;, sig=null, start=L1, end=L2> L1 { aload0 // reference to self invokespecial TestClass$Companion <init>(()V); return } L2 { } } } 

La reference es solo al revés (ver la class de kotlin descomstackda)

 public final class TestClass { public static final Companion companion = ... } 

Así que puedes hacerlo como acabas de cortar cortando la parte .Companion del nombre de la class o la haces reference difícil con TestClass::class.java (lo que en mi opinión no es problema y es la mejor solución)

  • Igual a la sobrecarga en Kotlin
  • Conjunto de par nested en kotlin
  • Room Kotlin: Entidades y Pojos deben tener un constructor público utilizable
  • Usando FirebaseListAdapter en Kotlin
  • Error checkParameterIsNotNull en muestra de actividad de inicio de session
  • Alcance externo de Kotlin
  • Enlazar tamaño de ObservableList en Android Databinding
  • ¿Qué pasa con Room Database en Kotlin?
  • Kotlin, JPA y campos booleans
  • ¿Cómo puedo unir dos RxJava2 Obvervables por key?
  • Utilice la unidad de Kotlin (o cualquier otro object) escriba en el layout de Android