trackpad: Trackpad, val screen: Screen ) class Battery class Keyboard class Trackpad class Screen fun main() { val keyboard = Keyboard() val trackpad = Trackpad() val screen = Screen() val battery = Battery() val myMacBook = MacBook(battery, keyboard, trackpad, screen) }
Trackpad() val screen = Screen() val battery = Battery() val myMacBook = MacBook(battery, keyboard, trackpad, screen) val keyboard2 = Keyboard() val trackpad2 = Trackpad() val screen2 = Screen() val battery2 = Battery() val myMacBook2 = MacBook(battery, keyboard, trackpad, screen) }
} public static Builder builder() { return new Builder(); } public static MainComponent create() { return new Builder().build(); } @Override public MacBook macbook() { return new MacBook(new Battery()); } public static final class Builder { private Builder() { } public MainComponent build() { return new DaggerMainComponent(); } } }
} public static Builder builder() { return new Builder(); } public static MainComponent create() { return new Builder().build(); } @Override public MacBook macbook() { return new MacBook(new Battery()); } public static final class Builder { private Builder() { } public MainComponent build() { return new DaggerMainComponent(); } } }
} public static Builder builder() { return new Builder(); } public static MainComponent create() { return new Builder().build(); } @Override public MacBook macbook() { return new MacBook(new Battery()); } public static final class Builder { private Builder() { } public MainComponent build() { return new DaggerMainComponent(); } } }
val trackpad: Trackpad, val screen: Screen ) class Battery @Inject constructor() class Keyboard @Inject constructor() class Trackpad @Inject constructor() class Screen @Inject constructor() @Component interface MainComponent { fun inject(main: Main) } class Main { @Inject lateinit var macbook: MacBook init { DaggerMainComponent.create().inject(this) } fun main() { // Use macbook here } }
val trackpad: Trackpad, val screen: Screen ) class Battery @Inject constructor() class Keyboard @Inject constructor() class Trackpad @Inject constructor() class Screen @Inject constructor() @Component interface MainComponent { fun inject(main: Main) } class Main { @Inject lateinit var macbook: MacBook init { DaggerMainComponent.create().inject(this) } fun main() { // Use macbook here } }
val trackpad: Trackpad, val screen: Screen ) class Battery @Inject constructor() class Keyboard @Inject constructor() class Trackpad @Inject constructor() class Screen @Inject constructor() @Component interface MainComponent { fun inject(main: Main) } class Main { @Inject lateinit var macbook: MacBook init { DaggerMainComponent.create().inject(this) } fun main() { // Use macbook here } }
val trackpad: Trackpad, val screen: Screen ) class Battery @Inject constructor() class Keyboard @Inject constructor() class Trackpad @Inject constructor() class Screen @Inject constructor() @Component interface MainComponent { fun inject(main: Main) } class Main { @Inject lateinit var macbook: MacBook init { DaggerMainComponent.create().inject(this) } fun main() { // Use macbook here } }
val trackpad: Trackpad, val screen: Screen ) class Battery @Inject constructor() class Keyboard @Inject constructor() class Trackpad @Inject constructor() class Screen @Inject constructor() @Component interface MainComponent { fun inject(main: Main) } class Main { @Inject lateinit var macbook: MacBook init { DaggerMainComponent.create().inject(this) } fun main() { // Use macbook here } }
abstract interface MainComponent { ^ Keyboard is injected at MacBook(keyboard) MacBook is injected at Main.macbook Main is injected at MainComponent.inject(Main)