Sobes.tech
Junior — Middle

Dagger-ში ერთ მოდულში ორი მეთოდის განხორციელება შესაძლებელია, რომლებიც ერთიდაიგივე ტიპის ობიექტს აბრუნებენ?

sobes.tech AI

პასუხი AI-სგან

Dagger-ში, დამატებითი კვალიფიკაციის გარეშე, ერთ მოდულში ორი მეთოდის მარტივი გამოცხადება შეუძლებელია, რომლებიც აბრუნებენ ერთსა და იმავე ტიპის ობიექტს, რადგან ეს გამოიწვევს დამოკიდებულების გადაჭრის კონფლიქტს. ასეთი სიტუაციის განსახორციელებლად, საჭიროა გამოიყენოთ @Qualifier ან @Named ანოტაციები, რათა განასხვავოთ ეს დამოკიდებულებები. მაგალითად:

@Module
public class MyModule {
    @Provides
    @Named("typeA")
    MyObject provideMyObjectA() {
        return new MyObject("A");
    }

    @Provides
    @Named("typeB")
    MyObject provideMyObjectB() {
        return new MyObject("B");
    }
}

ამგვარად, ინექციის დროს შეიძლება მიუთითოთ საჭირო ვარიანტი @Named("typeA") ან @Named("typeB") გამოყენებით.