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;
    }
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
obtained the interface generic parameter types <p > for example : < / p > <code > ClassB&lt ; T&gt ; implements ClassA&lt ; T&gt ; < / code >