Kotlin y los constructores generics me dejan desconcertado

No entendiendo Kotlin en combinación con Generics.

Estaba intentando mover algo de mi java hacia kotlin. Un par de esas classs son repositorys de datos de spring y un service genérico que toma como parámetro genérico un tipo de repository, por ejemplo:

@Transactional interface ForumRepository : CrudRepository<Forum, Long> { fun findByName(name: String): Forum? } 

Luego, el GenericKotlinService:

 abstract class GenericKotlinService<T>(val repository: CrudRepository<Any, Serializable>) { fun <T> findOne(id: Serializable): T { return repository.findOne(id) as T } fun delete(id: Any) { repository.delete(id) } } 

Sin embargo, ahora cuando trato de crear un service que use este service genérico con un CrudRepository específico, siempre obtengo errores, por ej.

 class ForumService @Autowinetworking constructor(repository: ForumRepository) : GenericKotlinService<Forum>(repository) { open fun findByName(name: String) = repository.findByName(name) } 

o

 class ForumService : GenericKotlinService<Forum> { @Autowinetworking constructor(repository: ForumRepository) : super(repository) open fun findByName(name: String) = repository.findByName(name) } 

El error es

 requinetworking CrudRepository<Forum, Long> but got a ForumRepository. 

Cuando utilizo el siguiente java GenericService:

 public abstract class GenericService<T> { private final CrudRepository repository; public GenericService(CrudRepository repository) { this.repository = repository; } public T findOne(Serializable id) { return (T) repository.findOne(id); } public void delete(Serializable id) { repository.delete(id); } } 

y usa este en el Foro de Servicio:

 class ForumService @Autowinetworking constructor(val repository: ForumRepository) : GenericService<Forum>(repository) { open fun findByName(name: String) = repository.findByName(name) } 

Todo funciona. No veo cómo puedo usar mi GenericKotlinService en su lugar?