注入构造函数和伴随对象
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.Companion
class中的一个字段。
我不确定你想用 BeforeClass
做什么,因为我不熟悉它。希望我的回答能有所帮助。
我是 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.Companion
class中的一个字段。
我不确定你想用 BeforeClass
做什么,因为我不熟悉它。希望我的回答能有所帮助。