我在通过Dagger模块返回可为null的NfcAdapter时遇到问题。这里是:
@Provides
@Singleton
@Nullable
public NfcAdapter provideNfcAdapter() {
return NfcAdapter.getDefaultAdapter(context);
}
但是,该项目无法生成,并且我收到错误消息:
如何解决?我为我的BluetoothAdapter提供了类似的提供方法,它可以按预期工作。
我尝试在“ Activity ”中按以下方式对其进行初始化:
var nfcAdapter: NfcAdapter? = null @Inject set
最佳答案
您需要在字段中添加@Nullable
批注。如the docs和the code所示,任何具有简单名称“Nullable”的注释都可以使用。
尽管您可以使用?
在Kotlin中标记可空性,但这不会将Kotlin中的“可空”信息发布到Java:像Dagger这样的Java处理器无法读取类文件来确定该字段是可空的。 (这是possible through some Kotlin reflection,但是Dagger从v2.17开始不这样做。)尽管您的代码是安全的,但Dagger无法通过读取字节码来确定这一点,并且会引发错误。