2017-05-12 6 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あなたは静的クラスからbarフィールドにアクセスすることはできません同じように、コンパニオンオブジェクトの変数のスコープではない理由ですCompanion。あなたの特性yは実際にはTest.Companionクラスのフィールドです。

私はそれに精通していないので、BeforeClassのもので何をしようとしているのか分かりません。とにかく私の答えが助けてくれることを願っています

関連する問題