if ( ff instanceof GenericArrayType ) { GenericArrayType ffg = (GenericArrayType) ff; t = resolveGenericType( ffg.getGenericComponentType(), genericsInfo ); } else { t = f.getType().getComponentType(); Type listType = ( (ParameterizedType) fieldType ).getActualTypeArguments()[0]; try { t = resolveGenericType( listType, genericsInfo ); } catch ( Throwable ex ) { throw new RuntimeException( "Can't retrieve type from List for " + f, ex ); t = resolveGenericType( f.getGenericType(), genericsInfo ); getterClass = getterType.getActualTypeArguments()[0]; Class<?> getter = (Class<?>) resolveGenericType( getterClass, genericsInfo ); if ( getter.isArray() ) { throw new RuntimeException( "Method should be getter: " + m );