Конструктор вложения и объект-компаньон

Я новичок в Kotlin, и я пытаюсь ввести значение (в этом примере это просто Int, но в реальном коде это класс провайдера). Что я делаю неправильно здесь? и почему х является нерешенной ссылкой?

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

Сопутствующий объект – это статический объект, связанный с классом , а не с экземпляром класса.

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

похож на следующий код в Java:

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

Вот почему x не находится в области переменных объекта-компаньона, так же, как вы не можете получить доступ к полю bar из статического класса Companion . Ваше свойство y фактически является полем в классе Test.Companion .

Я не уверен, что вы пытаетесь сделать с BeforeClass , так как я не знаком с этим. Надеюсь, мой ответ все равно поможет.