Inyectar constructor y object complementario

Soy algo nuevo para Kotlin y estoy intentando inyectar un valor (en este ejemplo, es solo un int pero en el código real es una class de proveedor) ¿Qué estoy haciendo mal aquí? y ¿por qué x es una reference no resuelta?

class Test @Inject constructor(private val x: Int) { companion object { var y: Int = 0 @BeforeClass @JvmStatic fun beforeClass() { y = x * 2 } } } 

Un object complementario es un object estático asociado con una class , no con una instancia de una class.

 class Foo(val bar: Baz) { companion object {} } 

es similar al siguiente código en Java:

 class Foo { static class Companion { } static final Foo.Companion Companion = new Foo.Companion(); final Baz bar; Foo(Baz bar) { this.bar = bar; } } 

Esta es la razón por la cual x no está en el scope variable del object complementario, al igual que no puede acceder al campo de la bar desde la class estática Companion . Su propiedad y es en realidad un campo en la class Test.Companion .

No estoy seguro de lo que estás tratando de hacer con la cosa BeforeClass , ya que no estoy familiarizado con eso. Espero que mi respuesta ayude de todos modos.

  • ¿Cómo leer JSON desde Url usando kotlin Android?
  • Cómo notificar a Observable cuando finalice CountdownTimer
  • Kotlin con stack RxKotlinFX da un error de class de acceso
  • ¿Cómo especificar la versión de RxJava al usar RxKotlin?
  • RxKotlin flattenAsObservable (): no coincide con el método de reference
  • Cómo comprimir algunos observables en lenguaje Kotlin con RxAndroid
  • Spring 5 and Kotlin 1.1 Coroutines: Type rx.Scheduler no presente
  • Llamada asincrónica para cada elemento dentro de una colección
  • La suscripción de rx kotlin no funciona, no recibe artículos
  • RxKotlin collectInto () MutableList usando references de método
  • Crear nueva instancia de object Kotlin