Hilt 提供依赖实例时,报了Types may only contain one @Inject constructor
Posted microhex
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hilt 提供依赖实例时,报了Types may only contain one @Inject constructor相关的知识,希望对你有一定的参考价值。
项目场景:
在使用Hilt提供依赖实例时,代码这么写的:
class HelloTwo
@Inject
@JvmOverloads
constructor(private val data: String = "data")
然后编译报错:
Types may only contain one @Inject constructor
问题描述:
反编译了一下,查看最终java的代码:
发现@Inject注释在两个构造函数上了,这样Hilt在依赖构建时,就不知道使用哪个好了。但是怎么改呢?,其实我也不知道,但是我这是这么做的:
解决方案:
我先写了一个段 Java 代码:
public class HelloTwo
private String data ;
@Inject
public HelloTwo()
this("data");
public HelloTwo(String data)
this.data = data ;
将 @Inject 注释写到了 默认构造函数上,那么使用 java转kotlin功能:
class HelloTwo(private val data: String)
@Inject
constructor() : this("data")
然后就成功了,不得不说,AS也是真心牛叉,这一点都考虑到了。其实也是自己 kotlin知识不足,构造函数没有学会的原因造成的。
以上是关于Hilt 提供依赖实例时,报了Types may only contain one @Inject constructor的主要内容,如果未能解决你的问题,请参考以下文章