Hilt 提供依赖实例时,报了Types may only contain one @Inject constructor
项目场景:在使用Hilt提供依赖实例时,代码这么写的:class HelloTwo@Inject@JvmOverloadsconstructor(private val data: String = "data")然后编译报错:Types may only contain one @Inject constructor问题描述:反编译了一下,查看最终java的代码:发现@Inject注释在两个构造
·
项目场景:
在使用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知识不足,构造函数没有学会的原因造成的。
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
已为社区贡献5条内容
所有评论(0)