private static <T> Set<Type> getInterfaces(final Class<T> interfaceClass) { final Set<Type> ret = new HashSet<>(); final Class<?>[] interfaces = interfaceClass.getInterfaces(); if (0 == interfaces.length) { return ret; } for (final Class<?> i : interfaces) { ret.add(i); ret.addAll(getInterfaces(i)); } return ret; }
public static <T> Set<Type> getBeanTypes(final Class<T> beanClass) { final Set<Type> ret = new HashSet<>(); ret.add(beanClass); Type genericSuperclass = beanClass; while (genericSuperclass != Object.class) { Type[] genericInterfaces = null; if (genericSuperclass instanceof Class<?>) { genericInterfaces = ((Class<?>) genericSuperclass).getGenericInterfaces(); genericSuperclass = ((Class<?>) genericSuperclass).getGenericSuperclass(); } else if (genericSuperclass instanceof ParameterizedType) { final Type rawType = ((ParameterizedType) genericSuperclass).getRawType(); genericInterfaces = ((Class<?>) rawType).getGenericInterfaces(); genericSuperclass = ((Class<?>) rawType).getGenericSuperclass(); } if (genericSuperclass != Object.class) { ret.add(genericSuperclass); } if (null != genericInterfaces && 0 != genericInterfaces.length) { for (final Type genericInterface : genericInterfaces) { ret.add(genericInterface); ret.addAll(getInterfaces((Class<? super T>) genericInterface)); } } } return ret; }
private static <T> Set<Type> getInterfaces(final Class<T> interfaceClass) { final Set<Type> ret = new HashSet<>(); final Class<?>[] interfaces = interfaceClass.getInterfaces(); if (0 == interfaces.length) { return ret; } for (final Class<?> i : interfaces) { ret.add(i); ret.addAll(getInterfaces(i)); } return ret; }
public static <T> Set<Type> getBeanTypes(final Class<T> beanClass) { final Set<Type> ret = new HashSet<>(); ret.add(beanClass); Type genericSuperclass = beanClass; while (genericSuperclass != Object.class) { Type[] genericInterfaces = null; if (genericSuperclass instanceof Class<?>) { genericInterfaces = ((Class<?>) genericSuperclass).getGenericInterfaces(); genericSuperclass = ((Class<?>) genericSuperclass).getGenericSuperclass(); } else if (genericSuperclass instanceof ParameterizedType) { final Type rawType = ((ParameterizedType) genericSuperclass).getRawType(); genericInterfaces = ((Class<?>) rawType).getGenericInterfaces(); genericSuperclass = ((Class<?>) rawType).getGenericSuperclass(); } if (genericSuperclass != Object.class) { ret.add(genericSuperclass); } if (null != genericInterfaces && 0 != genericInterfaces.length) { for (final Type genericInterface : genericInterfaces) { ret.add(genericInterface); ret.addAll(getInterfaces((Class<? super T>) genericInterface)); } } } return ret; }