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)

  • Kotlin - Henetworkinga de Java Class que implementa Parcelable
  • Reflexión de kotlin para el método de Java que acepta una matriz de class nula
  • Kotlin - Nombres de propiedad ofuscados
  • Referencia no resuelta de Kotlin en time de compilation
  • reference no resuelta: text - Android Studio + Kotlin (findViewById fault?)
  • Vertx plus Koutlin coroutines cuelga para siempre
  • Android Studio 3.0: no se ha podido encontrar el método 'com.android.build.gradle.internal.variant.BaseVariantData.getOutputs () Ljava / util / List'
  • Subclass de AsyncTask en Kotlin: no se puede usar el parámetro constructor principal dentro de onPostExecute
  • Ejecución del progtwig Java y Kotlin con la biblioteca de time de ejecución Kotlin en el classpath
  • IntelliJ no reconoce el file kotlin después de eliminarlo y recrear con el mismo nombre
  • ¿Cómo arreglar mi código para eliminar la advertencia de lanzamiento?