public AnnotationParser(Class<? extends Annotation> annotationClass, final Class<? extends Annotation> defaultAnnotationClass) { if (annotationClass == null) { Class[] genericSupertypes = ClassUtil.getGenericSupertypes(this.getClass());
@Test void testClassGenerics2() { Class[] componentTypes = ClassUtil.getGenericSupertypes(Base22.class); assertNull(componentTypes); componentTypes = ClassUtil.getGenericSupertypes(Impl11.class); assertEquals(2, componentTypes.length); assertEquals(Long.class, componentTypes[0]); assertEquals(Number.class, componentTypes[1]); componentTypes = ClassUtil.getGenericSupertypes(Impl22.class); assertEquals(1, componentTypes.length); assertEquals(Integer.class, componentTypes[0]); componentTypes = ClassUtil.getGenericSupertypes(Impl33.class); assertNull(componentTypes); }
@Test void testClassGenerics1() { Class[] componentTypes = ClassUtil.getGenericSupertypes(Base2.class); assertNull(componentTypes); Type[] types = Base2.class.getGenericInterfaces(); assertEquals(0, types.length); componentTypes = ClassUtil.getGenericSupertypes(Impl1.class); assertEquals(2, componentTypes.length); assertEquals(Number.class, componentTypes[0]); assertEquals(Long.class, componentTypes[1]); types = Impl1.class.getGenericInterfaces(); assertEquals(0, types.length); componentTypes = ClassUtil.getGenericSupertypes(Impl2.class); assertEquals(1, componentTypes.length); assertEquals(Integer.class, componentTypes[0]); types = Impl2.class.getGenericInterfaces(); assertEquals(0, types.length); componentTypes = ClassUtil.getGenericSupertypes(Impl3.class); assertNull(componentTypes); }
@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); }
@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)); }
public AnnotationParser(Class<? extends Annotation> annotationClass, final Class<? extends Annotation> defaultAnnotationClass) { if (annotationClass == null) { Class[] genericSupertypes = ClassUtil.getGenericSupertypes(this.getClass());