Java genéricos para imponer el tipo de retorno del método abstracto
Tengo la siguiente situación:
abstract class X { abstract X someMethod (...) {...} }.
Ahora quiero restringir cualquier implementación de X para que su método 'someMethod' devuelva ese tipo de implementación en particular, no solo X:
class X1 extends X { X1 someMethod (...) {...} }.
class X1 extends X { X someMethod (...) {...} }. //want this to be flagged as an error
class X2 extends X { X1 someMethod (...) {...} }. //want this to be flagged as an error too
¿Es posible lograr esto usando los genéricos de Java?
EDITAR
Bueno. Solo hice la pregunta si / no y obtuve un "si". Mi culpa. Lo que realmente me interesó es "cómo escribo las declaraciones".