2017-05-12 27 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做什麼,因爲我不熟悉它。無論如何,希望我的回答有幫助