2017-05-12 30 views
0

我对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 
     } 
    } 
} 

回答

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在同伴对象的变量范围不大,就像你不能从静态类访问barCompanion。您的房产y实际上是Test.Companion类中的一个字段。

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