私はdagger2で再生しようとしていましたが、フィールド注入に問題がありました。Dagger2は注入されたクラスの中にフィールドを注入できません
POJOクラス:
// User.java
public class User {
private String firstName, lastName;
public User(String firstName, String lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
}
クラスI user
フィールドを注入することはできません。
//BackendService.java
public class BackendService {
@Inject
public User user; // Not injected -> Null
@Inject
public BackendService() {
}
}
ユーザープロバイダクラス
// UserModule.java
@Module
public class UserModule {
@Provides
@Singleton
User providesUser() {
return new User("AA","BB");
}
}
バックエンドプロバイダクラス
// BackendServiceModule.java
@Module
public class BackendServiceModule {
@Provides
BackendService provideBackendService() {
return new BackendService();
}
}
そして最後にではなく、少なくとも、問題があるコンポーネント
// ApplicationComponent.java
@Component(modules = {UserModule.class, BackendServiceModule.class})
public interface ApplicationComponent {
BackendService provideBackendService();
void inject(ConsumerMain consumerMain);
}
そのBackendService.java
フィールドでuser
は注入されません。
注入は、あなたの@Provides BackendService
メソッドを削除しますBackendService
私の問題を解決しました。問題を説明してくれてありがとうございます:-) –