2017-05-12 1 views
0

Je suis un peu nouveau à Kotlin et j'essaye d'Injecter une valeur (dans cet exemple c'est juste un Int mais dans le vrai code c'est une classe Provider) Que fais-je? mal ici? et pourquoi x est une référence non résolue?Injecter le constructeur et l'objet compagnon

class Test 
@Inject constructor(private val x: Int) { 

companion object { 
    var y: Int = 0 

     @BeforeClass @JvmStatic 
     fun beforeClass() { 
      y = x * 2 
     } 
    } 
} 

Répondre

2

Un objet compagnon est un objet statique associé à une classe , non pas avec une instance d'une classe.

class Foo(val bar: Baz) { 
    companion object {} 
} 

est similaire au code suivant en Java:

class Foo { 
    static class Companion { } 
    static final Foo.Companion Companion = new Foo.Companion(); 

    final Baz bar; 
    Foo(Baz bar) { this.bar = bar; } 
} 

Ceci est la raison pour laquelle x est pas dans le champ d'application variable de l'objet compagnon, tout comme vous ne pouvez pas accéder au champ bar de la classe statique Companion. Votre propriété y est en fait un champ de la classe Test.Companion.

Je ne suis pas sûr de ce que vous essayez de faire avec la chose BeforeClass, puisque je ne suis pas familier avec elle. J'espère que ma réponse aide de toute façon.