Java 注入构造函数和伴随对象

Java 注入构造函数和伴随对象,java,junit,kotlin,guice,rx-kotlin,Java,Junit,Kotlin,Guice,Rx Kotlin,我对Kotlin有点陌生,我正在尝试注入一个值(在本例中它只是一个Int,但在实际代码中它是一个Provider类) 我做错了什么?为什么x是一个未解析的引用 class Test @Inject constructor(private val x: Int) { companion object { var y: Int = 0 @BeforeClass @JvmStatic fun beforeClass() { y = x

我对Kotlin有点陌生,我正在尝试注入一个值(在本例中它只是一个Int,但在实际代码中它是一个Provider类) 我做错了什么?为什么x是一个未解析的引用

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
不在companion对象的可变范围内,就像您不能从静态类
companion
访问
bar
字段一样。您的属性
y
实际上是
Test.Companion
类中的一个字段

我不确定你想用
BeforeClass
做什么,因为我对它不熟悉。希望我的回答能有所帮助