为什么我收到 Interface ... 没有构造函数(我有 Kotlin 和 java 类)?

Why I receive Interface ... does not have constructors (I have Kotlin and java classes)?

这是我的 Kotlin 代码,当我构建时收到 Interface ImageSizeProvider does not have constructors

interface ImageSizeProvider {
    val spec: ImageSizeSpec
}

@FragmentScope
class ImageSizeProviderImpl @Inject constructor(
    private val mResources: Resources
) : ImageSizeProvider {
     override val spec: ImageSizeSpec
        get() = ...
}
and here is my java dagger interface ( I don't want to migrate this to Kotlin yet)




    @Module
public interface XXXModule {
    @Binds
    @FragmentScope
    ImageSizeProvider bindImageSizeProvider(ImageSizeProviderImpl imageSizeProvider);

根据 language documentation,在 Interface 中声明的 属性 是抽象的。您的声明:

val spec ImageSizeSpec
因此,

是抽象的,您必须在实现 Interface 的任何 class 中提供覆盖声明。您的 ImageSizeProviderImpl 不包含 spec.

的覆盖声明

如果您创建 ImageSizeProvider 的实例,这将失败,因为变量 spec 未初始化。