我是Kotlin的新手,我正在尝试注入(inject)一个值(在此示例中,它只是一个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
不在伴随对象的变量范围内的原因,就像您无法从静态类bar
访问Companion
字段一样。您的属性y
实际上是Test.Companion
类中的一个字段。我不确定您要使用
BeforeClass
做什么,因为我对此并不熟悉。希望我的回答能有所帮助。