Вы можете использовать:
thisObj.getClass().getSuperclass()
thisObj.getClass().getInterfaces()
thisObj.getClass().getGenericInterfaces()
thisObj.getClass().getGenericSuperclass()
Я недавно что-то кодировал, чтобы сканировать членов класса, и если они были не примитивными, то сканировал и их. Однако я не двигался вверх, поэтому я не использовал вышеуказанные методы, но я считаю, что они должны делать то, что вы хотите.
EDIT:
Я провел простой тест со следующим:
public class CheckMe {
public CheckMe() {
}
}
public class CheckMeToo extends CheckMe {
public CheckMeToo() {
}
}
// In main
System.out.println( CheckMeToo.class.getSuperclass() );
// Output
class CheckMe
После этого вопрос кодирования обхода. Если его параметризовать, то все может стать немного сложнее, но все же вполне выполнимо.
РЕДАКТИРОВАТЬ: Извините, что не читал внимательно, позвольте мне изучить его подробнее.
РЕДАКТИРОВАТЬ: Кажется, нет никакого способа сделать это без сканирования всего в вашем CLASSPATH и проверки, чтобы убедиться, что объект является экземпляром некоторого класса.