Class GenericTypeExtractor
java.lang.Object
org.mockito.internal.util.reflection.GenericTypeExtractor
Attempts to extract generic type of given target base class or target interface
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprivate static Class
<?> extractGeneric
(Type type) Attempts to extract generic parameter type of given type.private static Type
findGenericInterface
(Class<?> sourceClass, Class<?> targetBaseInterface) Finds generic interface implementation based on the source class and the target interface.static Class
<?> genericTypeOf
(Class<?> rootClass, Class<?> targetBaseClass, Class<?> targetBaseInterface) Extract generic type of root class either from the target base class or from target base interface.
-
Constructor Details
-
GenericTypeExtractor
private GenericTypeExtractor()
-
-
Method Details
-
genericTypeOf
public static Class<?> genericTypeOf(Class<?> rootClass, Class<?> targetBaseClass, Class<?> targetBaseInterface) Extract generic type of root class either from the target base class or from target base interface. Examples:1. Foo implements IFoo[Integer]: genericTypeOf(Foo.class, Object.class, IFoo.class) returns Integer
2. Foo extends BaseFoo[String]: genericTypeOf(Foo.class, BaseFoo.class, IFoo.class) returns String
3. Foo extends BaseFoo; BaseFoo implements IFoo[String]: genericTypeOf(Foo.class, BaseFoo.class, Object.class) returns String
Does not support nested generics, only supports single type parameter.
- Parameters:
rootClass
- - the root class that the search begins fromtargetBaseClass
- - if one of the classes in the root class' hierarchy extends this base class it will be used for generic type extractiontargetBaseInterface
- - if one of the interfaces in the root class' hierarchy implements this interface it will be used for generic type extraction- Returns:
- generic interface if found, Object.class if not found.
-
findGenericInterface
Finds generic interface implementation based on the source class and the target interface. Returns null if not found. Recurses the interface hierarchy. -
extractGeneric
Attempts to extract generic parameter type of given type. If there is no generic parameter it returns Object.class
-