Like the following:
public class MainActivity extends Activity {
@Inject
User mUser1;
@Inject
User mUser2;
@Inject
User mUser3;
protected void onCreate(@Nullable Bundle savedInstanceState) {
// how to inject ...
......
Log.d("XXX",mUser1.getName());
Log.d("XXX",mUser2.getName());
Log.d("XXX",mUser3.getName());
}
}
public class User {
private final String name;
public User (String name) {
this.name = name;
}
public String getName() {
return name;
}
}
@Module
public class MainModule {
@Provides
User providesUser(String name) {
return new User(name);
}
@Provides
String providesUser() {
return "Jack";
}
}
@Component(modules = MainModule .class)
public interface ChildComponent {
void inject(MainActivity activity);
}
Above the code, only create three user object with same name, but i want to created with diff name
I try to use '@Qualifier', but it only distinguish constructor, can't transfer the name parameter
I try this in MainModule.java:
@Named("Yuri")
@Provides
User providesUser() {
return new User("yuri");
}
@Named("Warren")
@Provides
User providesUser() {
return new User("warren");
}
@Named("Jack")
@Provides
User providesUser() {
return new User("Jack");
}
But the method 'providesUser' is already defined.
Name parameter is final, can't modify
How should this situation be handled!!!