У меня есть следующий тип:
class Images<T : Image>(
val images: List<T>,
val totalCount: Int
)
Так что список здесь может содержать только объекты, которые наследуются от Image
.
Теперь у меня есть интерфейс:
interface ImageService<T : Image> {
fun getNewImages(offset: Int, limit: Int): Images<T>
fun getNextImage(): Image
}
И конкретная реализация:
class NumberImageService : ImageService<NumberImage> {
override fun getNewImages(offset: Int, limit: Int): Images<NumberImage> {
// return something
}
override fun getNextImage(): NumberImage {
// return something
}
}
Пока все хорошо. Теперь у меня есть другой класс, где я решаю, какую конкретную реализацию использовать на основе ввода enum:
class ImageQueryResolver : GraphQLQueryResolver {
fun getNewImages(input: ImageInput, offset: Int, limit: Int = Int.MAX_VALUE): Images {
return when (input.imageType) {
ImageEnum.NUMBER ->
numberImageService.getNewImages(offset, limit)
ImageEnum.LETTER ->
letterImageService.getNewImages(offset, limit)
}
}
fun getNextImage(input: ImageInput): Image {
// return something
}
}
Так что это дает мне ошибку, потому что тип возвращаемого значения getNewImages
, который Images
требуетиметь аргумент:
One type argument expected for class Images<T : Image>
Но какой аргумент мне нужно использовать сейчас?