У меня есть зависимость от класса (пользователя) в моем ApiService. У меня уже есть provideUser
в моем классе Component. Я пытаюсь ввести с тем же свойством serviceUser мой пользовательский класс в 2 поля. Проблема состоит в том, что одно поле является классом, а второй представляет собой интерфейс, как это:Dagger 2 - класс ввода в объявленный интерфейс
@Inject
User user;
@Inject
UserFull userFull;
И код компонента:
package com.ltx.dagger2.components;
import com.ltx.dagger2.activities.MainActivity;
import com.ltx.dagger2.modules.BackendServiceModule;
import com.ltx.dagger2.modules.UserModule;
import javax.inject.Singleton;
import dagger.Component;
@Singleton
@Component(modules = {UserModule.class, ... other stuff})
public interface AppComponent {
void inject(MainActivity activity);
}
Другие элементы уравнения:
public class User implements UserFull {
String firstName;
String lastName;
public User(String firstName, String lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
@Override
public String toString() {
return "User{" +
"firstName='" + firstName + '\'' +
", lastName='" + lastName + '\'' +
'}';
}
@Override
public String getFullName() {
return firstName + " " + lastName;
}
}
public interface UserFull {
String getFullName();
}
И код модуля:
package com.ltx.dagger2.modules;import com.ltx.dagger2.models.User; import com.ltx.dagger2.models.UserFull; import javax.inject.Singleton;import dagger.Module; import dagger.Provides;
@Module
public class UserModule {
@Singleton
@Provides
User provideUser() {
return new User("Hakuna","Matata");
}
}
Могу ли я заставить Dagger2 предоставить один и тот же класс User в поле UserFull или мне всегда нужно добавить определенный метод UserFull provideUserFull
?
Да, это тоже мое решение, но я как бы надеялся найти что-то более элегантное. Теперь, когда я думаю, что, вероятно, трудно быть однозначным при инъекционном внедрении. Но, тем не менее, я буду держать вопрос открытым для большего количества идей (если таковые имеются), тогда я отмечу принятый ответ. Multzam. – shadox