code: public static Class getClassGenricType(final Class clazz, final int index) {
  		Type genType = clazz.getGenericSuperclass();
  
  		if (!(genType instanceof ParameterizedType)) {
  			LOG.warn("{}'s superclass not ParameterizedType", clazz.getSimpleName());
  			return Object.class;
  		}
  
  		Type[] params = ((ParameterizedType) genType).getActualTypeArguments();
  
  		if (index >= params.length || index < 0) {
  			LOG.warn("Index: {}, Size of {}'s Parameterized Type: {}", index, clazz.getSimpleName(), params.length);
  			return Object.class;
  		}
  		if (!(params[index] instanceof Class)) {
  			LOG.warn("{} not set the actual class on superclass generic parameter", clazz.getSimpleName());
  			return Object.class;
  		}
  
  		return (Class) params[index];
  	}
docs: 通过反射，获得 Class 定义中声明的父类的泛型参数的类型。
  如无法找到，返回 Object.class。
  如：
  
  <pre>
  public UserDao extends HibernateDao&lt;User, Long&gt;
  </pre>
  
  @param clazz
  clazz The class to introspect
  @param index
  the Index of the generic ddeclaration,start from 0.
  @return the index generic declaration, or Object.class if cannot be determined