Если вы хотите избежать решения для рефлексии, вы можете заставить людей самим передать вам несколько любопытных повторяющихся дженериков, например:
class AnotherClass extends SomeClass<AnotherClass> {
public AnotherClass() {
super(AnotherClass.class);
}
}
abstract class SomeClass<T extends SomeClass<T>> {
final Class<T> enclosing;
public SomeClass(Class<T> c) {
enclosing = c;
}
}