99import org .junit .Rule ;
1010import org .junit .Test ;
1111
12+ import java .lang .reflect .Type ;
1213import java .util .AbstractList ;
1314import java .util .AbstractMap ;
1415import java .util .ArrayList ;
@@ -24,6 +25,38 @@ public class TypesTest {
2425 @ Rule
2526 public JUnitSoftAssertions softly = new JUnitSoftAssertions ();
2627
28+ @ Test
29+ public void newParameterizedType_should_create_equals_parameters_types () {
30+ Type parameterizedType1 = Types .newParameterizedType (List .class , String .class );
31+ Type parameterizedType2 = Types .newParameterizedType (List .class , String .class );
32+ softly .assertThat (parameterizedType1 .equals (parameterizedType2 )).isTrue ();
33+
34+ Type typeReference = new TypeReference <List <String >>() {}.getType ();
35+ softly .assertThat (typeReference .equals (parameterizedType1 )).isTrue ();
36+ }
37+
38+ static class GenericHolder <T > {
39+ final T value ;
40+
41+ GenericHolder (T value ) {
42+ this .value = value ;
43+ }
44+
45+ public T getValue () {
46+ return value ;
47+ }
48+ }
49+
50+ @ Test
51+ public void newParameterizedType_should_create_equals_inner_parameters_types () {
52+ Type genericHolder1 = Types .newParameterizedType (GenericHolder .class , String .class );
53+ Type genericHolder2 = Types .newParameterizedType (GenericHolder .class , String .class );
54+ softly .assertThat (genericHolder1 .equals (genericHolder2 )).isTrue ();
55+
56+ Type typeReference = new TypeReference <GenericHolder <String >>() {}.getType ();
57+ softly .assertThat (typeReference .equals (genericHolder1 )).isTrue ();
58+ }
59+
2760 @ Test
2861 public void getRawType_should_return_the_class_of_non_parametrized_types () {
2962 softly .assertThat (Types .getRawType (Integer .class )).isEqualTo (Integer .class );
0 commit comments