¿Puede Kotlin permitir una function que devuelva un valor del tipo de implementación de esta interfaz?

Quiero escribir algo como esto:

/** * Represents a state, large or small. */ interface State { /** * */ val changeValue: StateChange<This> // does not compile; "This" is a keyword I made up that might reference the implementing class } /** * Represents a change in a state, large or small. * * @param StateType The type of state that has changed */ interface StateChange<StateType: State> 

Sin embargo, como noté en mi comentario, no sé la syntax para esto. ¿Eso está en existencia? ¿O debo usar soluciones alternativas como obligar a un estado a tomarse como un parámetro genérico?


En caso de que no sea evidente, no puedo usar val changeValue: StateChange<State> porque eso lo hace posible, y no quiero eso:

 // BAD EXAMPLE - This is what I want to avoid class Foo: State { val changeValue: StateChange<Bar> = Bar().changeValue } class Bar: State { val changeValue: StateChange<Foo> = Foo().changeValue }