Если вам известно, что ConsumingHandler
является единственным интерфейсом, реализуемым AtomEntryHandler
, и вы знаете, что он принимает только один аргумент типа, вы можете сделать это:
interface ConsumingHandler<T> {}
class AtomEntry {}
class AtomEntryHandler implements ConsumingHandler<AtomEntry>
{
public static void main( String[] args )
{
Type[] interfaces = AtomEntryHandler.class.getGenericInterfaces();
ParameterizedType firstInterface = (ParameterizedType) interfaces[0];
Class c = (Class) firstInterface.getActualTypeArguments()[0];
System.out.println(c.getName()); // prints "AtomEntry"
}
}
В противном случае вы можетепокопайтесь в getGenericInterfaces()
и их actualTypeArguments
, пока не найдете что-то, похожее на то, что вы ищете.
Но если вам понадобится сделать это в реальном коде, либо что-то, вероятно, пошло неправильнов вашем дизайне, или вы пишете какую-то безумную гениальную библиотеку объект-макетов, и вам не нужно, чтобы мы отвечали на эти вопросы.