Restricción de generics Kotlin

Quiero hacer una class que pueda aceptar un tipo genérico limitado, de modo que mi class solo pueda aceptar la subclass de alguna class en particular. Pero sin tantos elencos. Mi código se ve así:

open class SomeClass<V> where V : SomeType { private val vc: PS<SomeType> = PS.create() protected val z: ZQ<V> = vc.doSmt(-1).map { it as V } open fun onVc(v: V) { vc.on(v) } } 

Con ese código, la advertencia parecía usar in varianza para el tipo genérico. Cambiar a SomeClass<in V> . Pero cuando onVc(v) a onVc(v) donde v es un subtipo de SomeType , se rechaza. v es type Nothing . Leí la documentation genérica de kotlin aquí https://kotlinlang.org/docs/reference/generics.html pero todavía estoy confundido.


Editar:

Todavía pondré el código original allí y agregaré un código mejor y más representativo aquí.

 open class SomeClass<V> (params: IgnoreThis) where V: SomeType { private val vc: PublishSubject<SomeType> = PublishSubject.create() protected val z: Observable<V> = vc.filter { it !is SubClassOfSomeType }.map { it as V } open fun onVc(v: V) { vc.onNext(v) } } 

Y esto es SomeType , su super y subclass parece

 interface SuperSomeType<S> { fun x(): Observable<S> } interface SomeType : SuperSomeType<EnumType1> interface SomeOtherType : SuperSomeType<EnumType2> // just to show why I used SuperSomeType interface class SubClassOfSomeType : SomeType { override fun x(): Observable<EnumType1> { return Observable.empty() } } 

Gracias por la sugerencia para hacerlo más claro