LANG-1261: ArrayUtils#contains and ArrayUtils#indexOf should compare objects with different types

This commit is contained in:
pascalschumacher 2016-08-23 19:22:55 +02:00
parent f30c4607a2
commit 1f56bd103d
2 changed files with 18 additions and 2 deletions

View File

@ -3184,7 +3184,7 @@ public class ArrayUtils {
return i;
}
}
} else if (array.getClass().getComponentType().isInstance(objectToFind)) {
} else {
for (int i = startIndex; i < array.length; i++) {
if (objectToFind.equals(array[i])) {
return i;

View File

@ -2953,7 +2953,23 @@ public class ArrayUtilsTest {
assertTrue(ArrayUtils.contains(array, null));
assertFalse(ArrayUtils.contains(array, "notInArray"));
}
@Test
public void testContains_LANG_1261() {
class LANG1261ParentObject {
@Override
public boolean equals(Object o) {
return true;
}
}
class LANG1261ChildObject extends LANG1261ParentObject {
}
Object[] array = new LANG1261ChildObject[] { new LANG1261ChildObject() };
assertTrue(ArrayUtils.contains(array, new LANG1261ParentObject()));
}
//-----------------------------------------------------------------------
@Test
public void testIndexOfLong() {