code: @SuppressWarnings("rawtypes")
  	public static Class getSuperClassGenricType(final Class<?> clazz, final int index) {
  
  		Type genType = clazz.getGenericSuperclass();
  
  		if (!(genType instanceof ParameterizedType)) {
  			/*
  			 * By Hilbert Wang @2015-3-8
  			 * logger.info(clazz.getSimpleName() + "'s superclass not ParameterizedType");
  			 */
  			return Object.class;
  		}
  
  		Type[] params = ((ParameterizedType) genType).getActualTypeArguments();
  
  		if (index >= params.length || index < 0) {
  			logger.warn("Index: " + index + ", Size of " + clazz.getSimpleName() + "'s Parameterized Type: "
  					+ params.length);
  			return Object.class;
  		}
  		if (!(params[index] instanceof Class)) {
  			logger.warn(clazz.getSimpleName() + " not set the actual class on superclass generic parameter");
  			return Object.class;
  		}
  
  		return (Class) params[index];
  	}
docs: 通过反射, 获得Class定义中声明的父类的泛型参数的类型.
  如无法找到, 返回Object.class.
  
  如public UserDao extends HibernateDao<User,Long>
  
  @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