Here is my Kotlin code and when I build I receive 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);
According to the language documentation, a property declared in an Interface
is abstract. Your declaration:
val spec ImageSizeSpec
is therefore abstract and you must provide an overridden declaration in any class that implements the Interface
. Your ImageSizeProviderImpl
doesn't contain an overridden declaration of spec
.
If you create an instance of ImageSizeProvider
, this will fail because the variable spec
is not initialized.