В моем текущем Android-приложении используется Kotlin & Room
У меня есть BaseDAO
интерфейс, как указано ниже: -
interface BaseDAO<T> {
/**
* Insert an object in the database.
*
* @param obj the object to be inserted.
*/
@Insert(onConflict = OnConflictStrategy.REPLACE)
fun insert(obj: T) : Long
/**
* Insert multiple objects in the database.
*
* @param obj the objects to be inserted.
*/
@Insert(onConflict = OnConflictStrategy.REPLACE)
fun insert(obj: List<T>) : List<Long>
/**
* Update an object from the database.
*
* @param obj the object to be updated
*/
@Update
fun update(obj: T)
/**
* Delete an object from the database
*
* @param obj the object to be deleted
*/
@Delete
fun delete(obj: T)
}
Я также хотел бы иметь метод вставки, который принимает одинэкземпляр DO как это в моем конкретном интерфейсе DAO
@Dao
interface SingleDAO : BaseDAO<SingleDO> {
@Query("SELECT count(*) from single limit 1")
fun count(): Long
/**
* Insert single object in the database.
*
* @param obj the object to be inserted.
*/
@Insert(onConflict = OnConflictStrategy.REPLACE)
fun insert(obj: SingleDO) : Long
}
Android Studio сообщает об этой ошибке компиляции
'insert' hides member of supertype 'BaseDAO' and needs 'override' modifier
Я хочу перегрузить, а не переопределить 'insert'
метод
Если я попытаюсь добавить '@JvmOverloads'
к методу перегрузки insert
, Android Studio выдаст мне эту ошибку
`'@JvmOverloads'` annotation cannot be used on interface methods
Как я могу перегрузить метод BaseDAO?