Method.getGenericParameterTypes();
returns an array of types that takes a parameter. Complexity increases exponentially from there.
In your specific case, this will work:
Method m = Something.class.getMethod("setCollection", Collection.class);
Class<?> parameter = (Class<?>) ((ParameterizedType) m.getGenericParameterTypes()[0]).getActualTypeArguments()[0];
, , . , , . , , , getGenericParameterTypes(), getActualTypeArguments(). .