如何在Kotlin中注入var?

我尝试将Dagger2实现到我的Kotlin项目中,但是@Inject注释存在问题。

在Java中看起来像这样,这工作正常:

 public class FooActivity extends Activity { @Inject @Named("accessTokenObservable") public Flowable<Optional<AccessToken>> accessTokenObservable; @Override protected void onCreate(@Nullable final Bundle savedInstanceState) { super.onCreate(savedInstanceState); App.getGraph().inject(this); } } 

但是,我如何写Kotlin中的@Inject

当我使用这个:

 @Inject @Named("accessTokenObservable") var accessTokenObservable: Flowable<Optional<AccessToken>>? = null 

我得到这个错误消息:

 Error:Dagger does not support injection into private fields 

如果我使用lateinit

 @Inject @Named("accessTokenObservable") lateinit var accessTokenObservable: Flowable<Optional<AccessToken>> 

我得到这个错误消息:

 Error:Flowable<Optional<AccessToken>> cannot be provided without an @Provides- or @Produces-annotated method. 

在Kotlin中注入什么是正确的语法?

我只是用

 @Inject lateinit var presenter: ItemsPresenter override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) ... AndroidInjection.inject(this) } 

没有任何问题

你必须像这样改变注入代码:

 @field:[Inject Named("accessTokenObservable")] lateinit var accessTokenObservable: Flowable<Optional<AccessToken>> 

,它会被修复。