Using this class makes it possible to capture a generic/parameterized argument type, such as
List<Money>,
instead of having to rely on the classical
.class construct.
When you specify a type reference using
.class you loose any Generic/Parameterized information, as you cannot write
List<Money>.class,
only
List.class.
With GenericType you can specify and capture parameterized type information
You can specify a parameterized type using GenericType:
var genericType = new GenericType<List<Money>>(){};
The type/getType() will return List.class
And genericType/getGenericType() will return ParameterizedType, which can be introspected further
You can also supply a non-parameterized type to GenericType:
var genericType = new GenericType<Money>(){};
In which case type/getType() will return Money.class
And genericType/getGenericType() will return Money.class