andrew coates created LANG-1114:
-----------------------------------
Summary: 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.4, 3.3.2
Reporter: andrew coates
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)