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.

  • Comportamiento con Kotlin Higher-Order Functions e interfaces de método único?
  • Repetir acciones en estado con RxJava
  • Kotlin con stack RxKotlinFX da un error de class de acceso
  • Obtiene N últimos objects emitidos por observables en RxJava2
  • RxJava - ¿Entradas de keyboard de contrapresión?
  • RxAndroid, cómo detectar si observable ha finalizado la emisión
  • ¿Cómo hacer un grupo? ¿Por qué coleccionar usando RxJava y Kotlin?
  • Usando RxJava para unir datos locales con datos remotos (o en caching)
  • Rx-Kotlin awaitTerminalEvent nunca se sube a Completo
  • ¿Puedo crear un método de extensión Kotlin para agregar una suscripción rxJava a una suscripción compuesta?
  • RxKotlin - matriz de observadores dynamics