1 package org.acegisecurity.domain.util;
2
3 import java.lang.reflect.ParameterizedType;
4 import java.lang.reflect.Type;
5
6
7 /***
8 * Provides a helper that locates the declarated generics type of a class.
9 *
10 * @author Ben Alex
11 * @version $Id: GenericsUtils.java,v 1.2 2005/11/17 00:55:50 benalex Exp $
12 */
13 public class GenericsUtils {
14 /***
15 * Locates the first generic declaration on a class.
16 *
17 * @param clazz The class to introspect
18 * @return the first generic declaration, or <code>null</code> if cannot be determined
19 */
20 public static Class getGeneric(Class clazz) {
21 Type genType = clazz.getGenericSuperclass();
22
23 if (genType instanceof ParameterizedType) {
24 Type[] params = ((ParameterizedType) genType).getActualTypeArguments();
25
26 if ((params != null) && (params.length == 1)) {
27 return (Class) params[0];
28 }
29 }
30
31 return null;
32 }
33 }