注入构造函数和伴随对象

Inject constructor and companion object

我是 Kotlin 的新手,我正在尝试注入一个值(在这个例子中它只是一个 Int 但在实际代码中它是一个 Provider class) 我在这里做错了什么?为什么 x 是未解析的引用?

class Test
@Inject constructor(private val x: Int) {

companion object {
    var y: Int = 0

        @BeforeClass @JvmStatic
        fun beforeClass() {
            y = x * 2
        }
    }
}

伴生对象是与 class 关联的静态对象,而不是与 class.

的实例关联的静态对象
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不在伴随对象的变量范围内,就像你不能从静态classCompanion访问bar字段一样。你的属性y实际上是Test.Companionclass中的一个字段。

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