src/main/java/com/rockagen/commons/util/ReflexUtil.java
public static Type[] getInterfacesGenricTypes(final Class<?> clazz) {
        if (clazz == null)
            return null;
        Type[] types=clazz.getGenericInterfaces();
        
        Type[] gtypes=new Type[0];
        for(Type t:types){
            if (t instanceof ParameterizedType) {
                Type[] gts=((ParameterizedType) t).getActualTypeArguments();
                int olen=gtypes.length;
                int ilen=gts.length;
                Type[] tmp=new Type[olen+ilen];
                System.arraycopy(gtypes,0,tmp,0,olen);
                System.arraycopy(gts, 0, tmp, olen, ilen);
                gtypes=tmp;
             }
        }
        return gtypes;
    }
public static Type[] getInterfacesGenricTypes(final Class<?> clazz) {
        if (clazz == null)
            return null;
        Type[] types=clazz.getGenericInterfaces();
        
        Type[] gtypes=new Type[0];
        for(Type t:types){
            if (t instanceof ParameterizedType) {
                Type[] gts=((ParameterizedType) t).getActualTypeArguments();
                int olen=gtypes.length;
                int ilen=gts.length;
                Type[] tmp=new Type[olen+ilen];
                System.arraycopy(gtypes,0,tmp,0,olen);
                System.arraycopy(gts, 0, tmp, olen, ilen);
                gtypes=tmp;
             }
        }
        return gtypes;
    }
obtained the interface generic parameter types
<p>
for example:
</p>
<code>
ClassB&lt;T&gt; implements ClassA&lt;T&gt;
</code>

@param clazz {@link java.lang.Class}
@return Types