jodd-core/src/main/java/jodd/util/ClassUtil.java
public static Class getComponentType(final Type type, final Class implClass, int index) {
		Class[] componentTypes = getComponentTypes(type, implClass);
		if (componentTypes == null) {
			return null;
		}

		if (index < 0) {
			index += componentTypes.length;
		}

		if (index >= componentTypes.length) {
			return null;
		}

		return componentTypes[index];
	}
public static Class getComponentType(final Type type, final Class implClass, int index) {
		Class[] componentTypes = getComponentTypes(type, implClass);
		if (componentTypes == null) {
			return null;
		}

		if (index < 0) {
			index += componentTypes.length;
		}

		if (index >= componentTypes.length) {
			return null;
		}

		return componentTypes[index];
	}
Returns single component type for given type and implementation.
Index is used when type consist of many
components. If negative, index will be calculated from the end of the
returned array.  Returns <code>null</code> if component type
does not exist or if index is out of bounds.
<p>

@see #getComponentTypes(java.lang.reflect.Type, Class)