注入构造函数和伴随对象

我对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访问bar字段一样。 你的属性y实际上是Test.Companion类中的一个字段。

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