我正在使用 Java 和Dagger依赖注入框架。我经常遇到必须初始化一个类但稍后使用的情况,例如:
private final Message message;
public SomePresenter() {
message = DaggerComponent.getMessage();
}
public someFuncA() {
message.doSomething();
}
public someFuncB() {
message.doSomething();
}
我希望该消息在第一次被请求时被初始化,并且从那一刻起始终在此类中使用相同的消息实例。我怎样才能做到这一点?
编辑:
我尝试按如下方式使用Lazyundefined
但lazyMessage 是:
public class StartPresenter {
@Inject
Lazy<Message> lazyMessage;
@Inject
public StartPresenter(ConfigObject config) {
}
}
这是我的 dagger2 配置:
@Component(modules = {ApplicationModule.class})
@Singleton
public interface ApplicationComponent {
Message getMessage();
}
@Module()
public class CoreModule {
@Provides @Singleton
Message provideMessage() {
return new MessageImpl();
}
}
如何让 dagger 实例化lazyMessage?