У меня проблема при попытке создать интерфейс с обобщенными c DAO для нескольких реализаций раздела API (все разделы имеют одинаковые методы с одинаковыми функциями CRUD, но с разными типами DAO).
Например, Вот как я описываю DAO (просто пример из Exposed docs):
class FileDAO(id: EntityID<Int>) : IntEntity(id) {
companion object : IntEntityClass<FileDAO>(Files)
var name by Files.name
var path by Files.path
var content by Files.content
var checksum by Files.checksum
var created by Files.created
var modified by Files.modified
var `package` by PackageDAO referencedOn Files.`package`
fun toModel(): SerializedFile {
return SerializedFile(
id.value,
name,
path,
checksum,
created.toString(),
modified.toString(),
`package`.toModel()
)
}
}
При попытке реализовать универсальный c интерфейс я делаю это:
interface SectionHandler<DAO> where DAO: FileDAO {
fun <DAO> getAllHandler(params: Parameters): Response where DAO: FileDAO {
return transaction(DBConn.getUserConn(params["user"]!!.toInt())) {
val files = DAO.all().notForUpdate().asIterable()
val response = FilesSection.Companion.FilesResp(emptyList<SerializedFile>().toMutableList())
files.forEach { response.files.add(it.toModel()) }
response
}
}
...
IntellijIDEA stati c проверка кода дает мне эту ошибку при DAO
доступе к объекту:
Параметр типа 'DAO' не может иметь или наследовать сопутствующий объект, поэтому он не может находиться слева от точки
Я не смог найти ни одного примера такой же ошибки в аналогичном контексте, кто-нибудь может помочь?