/** * Returns single component type. Index is used when type consist of many * components. If negative, index will be calculated from the end of the * returned array. Returns <code>null</code> if component type * does not exist or if index is out of bounds. * * @see #getComponentTypes(java.lang.reflect.Type) */ public static Class getComponentType(final Type type, final int index) { return getComponentType(type, null, index); }
final Class rawParameterComponentType = genericParams.length == 0 ? null : ClassUtil.getComponentType(genericParams[i], classDescriptor.getType(), -1);
/** * Shortcut for <code>getComponentType(type.getGenericSuperclass())</code>. * * @see #getComponentType(java.lang.reflect.Type, int) */ public static Class getGenericSupertype(final Class type, final int index) { return getComponentType(type.getGenericSuperclass(), index); }
final Class rawParameterComponentType = genericParams.length == 0 ? null : ClassUtil.getComponentType(genericParams[i], classDescriptor.getType(), -1);
ClassUtil.getComponentType(method.getGenericReturnType(), currentClass, 0);
assertEquals(String.class, ClassUtil.getComponentType(stringList.getGenericType(), 0)); assertEquals(String.class, ClassUtil.getComponentType(strings.getGenericType(), -1)); assertNull(ClassUtil.getComponentType(string.getGenericType(), 0)); assertEquals(Integer.class, ClassUtil.getComponentType(integerList.getGenericReturnType(), -1)); assertEquals(Integer.class, ClassUtil.getComponentType(integers.getGenericReturnType(), 0)); assertNull(ClassUtil.getComponentType(integer.getGenericReturnType(), -1)); assertNull(ClassUtil.getComponentType(template.getGenericReturnType(), 0)); assertEquals(Number.class, ClassUtil.getComponentType(collection.getGenericReturnType(), -1)); assertEquals(Object.class, ClassUtil.getComponentType(collection2.getGenericReturnType(), 0));
@Test void testGetFieldConcreteType() throws NoSuchFieldException { Field f1 = BaseClass.class.getField("f1"); Field f2 = BaseClass.class.getField("f2"); Field f3 = BaseClass.class.getField("f3"); Field f4 = ConcreteClass.class.getField("f4"); Field f5 = ConcreteClass.class.getField("f5"); Field array1 = BaseClass.class.getField("array1"); Class[] genericSupertypes = ClassUtil.getGenericSupertypes(ConcreteClass.class); assertEquals(String.class, genericSupertypes[0]); assertEquals(Integer.class, genericSupertypes[1]); assertEquals(String.class, ClassUtil.getRawType(f1.getGenericType(), ConcreteClass.class)); assertEquals(Integer.class, ClassUtil.getRawType(f2.getGenericType(), ConcreteClass.class)); assertEquals(String.class, ClassUtil.getRawType(f3.getGenericType(), ConcreteClass.class)); assertEquals(Long.class, ClassUtil.getRawType(f4.getGenericType(), ConcreteClass.class)); assertEquals(List.class, ClassUtil.getRawType(f5.getGenericType(), ConcreteClass.class)); assertEquals(String[].class, ClassUtil.getRawType(array1.getGenericType(), ConcreteClass.class)); assertEquals(Object.class, ClassUtil.getRawType(f1.getGenericType())); assertNull(ClassUtil.getComponentType(f1.getGenericType(), -1)); assertEquals(Long.class, ClassUtil.getComponentType(f5.getGenericType(), 0)); }
@Test void testClassGenerics3() { Class[] componentTypes = ClassUtil.getGenericSupertypes(BaseAna.class); assertNull(componentTypes); componentTypes = ClassUtil.getGenericSupertypes(ImplAna.class); assertNull(componentTypes); componentTypes = ClassUtil.getGenericSupertypes(ImplAna2.class); assertNull(componentTypes); componentTypes = ClassUtil.getGenericSupertypes(ImplAna3.class); assertNull(componentTypes); // scan generic interfacase Type[] types = ImplAna3.class.getGenericInterfaces(); assertEquals(1, types.length); assertEquals(ImplAna2.class, types[0]); assertNull(ClassUtil.getComponentType(types[0], 0)); types = ImplAna2.class.getGenericInterfaces(); assertEquals(1, types.length); assertEquals(Integer.class, ClassUtil.getComponentType(types[0], 0)); types = ImplAna.class.getGenericInterfaces(); assertEquals(1, types.length); assertEquals(Long.class, ClassUtil.getComponentType(types[0], 0)); types = BaseAna.class.getGenericInterfaces(); assertEquals(0, types.length); types = ImplAna4.class.getGenericInterfaces(); assertEquals(0, types.length); }
/** * Returns single component type. Index is used when type consist of many * components. If negative, index will be calculated from the end of the * returned array. Returns <code>null</code> if component type * does not exist or if index is out of bounds. * * @see #getComponentTypes(java.lang.reflect.Type) */ public static Class getComponentType(final Type type, final int index) { return getComponentType(type, null, index); }
/** * Shortcut for <code>getComponentType(type.getGenericSuperclass())</code>. * * @see #getComponentType(java.lang.reflect.Type, int) */ public static Class getGenericSupertype(final Class type, final int index) { return getComponentType(type.getGenericSuperclass(), index); }
ClassUtil.getComponentType(method.getGenericReturnType(), currentClass, 0);