Как возвращать один и тот же объект с помощью Dagger2?

Не получается вернуть один и тот же объект с помощью Dagger2.

Вот граф:

@Singleton
@Component
interface DaggerComponent {

    fun getCar(): Car
    
    fun getEngine(): Engine

    fun getFuel(): Fuel

    fun inject(act: MainActivity)
}


class Car @Inject constructor(private var engine: Engine) {
fun showEngine() {
    println(engine)
}
}

class Engine @Inject constructor(private var fuel: Fuel)

class Fuel @Inject constructor() {
private val fuel = if (BuildConfig.DEBUG) {
    "benzine"
} else {
    "diesel"
}
}

Вот код:

class MainActivity : AppCompatActivity() {
    @Inject
    lateinit var engine:Engine

    @Inject
    lateinit var car: Car

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        DaggerDaggerComponent.create().inject(this)

        car.showEngine() //Выводит testdagger.Engine@cf93bf7
        println(engine)  //Выводит testdagger.Engine@e6dfa64

    }


}

В выводе будут разные хэш коды engine: testdagger.Engine@cf93bf7

testdagger.Engine@e6dfa64

Как с помощью Dagger заставить использовать один и тот же объект Engine?


Ответы (1 шт):

Автор решения: Dmitry Kucherenko

В общем навесил дополнительно аннотацию @Singleton над классом Engine и все заработало как надо.

→ Ссылка