[ 
https://issues.apache.org/jira/browse/LANG-1114?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Benedikt Ritter updated LANG-1114:
----------------------------------
    Fix Version/s: Patch Needed

> TypeUtils.ParameterizedType#equals doesn't work with wildcard types
> -------------------------------------------------------------------
>
>                 Key: LANG-1114
>                 URL: https://issues.apache.org/jira/browse/LANG-1114
>             Project: Commons Lang
>          Issue Type: Bug
>          Components: lang.reflect.*
>    Affects Versions: 3.3.2, 3.4
>            Reporter: andrew coates
>             Fix For: Patch Needed
>
>
> There is a bug in TypeUtils.equals(WilcardType, Type).  It returns true if 
> the other type is not a WildcardType, it should return false.  See 
> TypeUtils@1629 for v3.3.2 and TypeUtils@791 for v3.4
> Bug can be seen with the following test:
> {code}
> @Test
>     public void shouldHandleEqualityOfParameterizedTypesWithWildcards() 
> throws Exception {
>         // Given:
>         class SomeType {
>             Collection<?> field;
>         }
>         final ParameterizedType wildcardCollectionType = (ParameterizedType) 
> SomeType.class.getDeclaredField("field").getGenericType();
>         final WildcardType wildcard = (WildcardType) 
> wildcardCollectionType.getActualTypeArguments()[0];
>         final ParameterizedType ptWithWildcard = 
> TypeUtils.parameterize(Collection.class, wildcard);
>         final ParameterizedType otherPt = 
> TypeUtils.parameterize(Collection.class, String.class);
>         // Then:
>         assertThat(otherPt, is(not(equalTo(ptWithWildcard))));  // Passes
>         assertThat(ptWithWildcard, is(not(equalTo(otherPt))));  // Fails
>     }
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to