为什么我收到 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
未初始化。
这是我的 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
未初始化。