Add primitive boolean/object conversions

Bug 21068, from Matthew Hawthorne


git-svn-id: https://svn.apache.org/repos/asf/jakarta/commons/proper/lang/trunk@137381 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Stephen Colebourne 2003-06-25 23:33:47 +00:00
parent 2878a430c1
commit a5c0361ee5
2 changed files with 118 additions and 5 deletions

View File

@ -68,8 +68,9 @@
* @author Moritz Petersen * @author Moritz Petersen
* @author <a href="mailto:fredrik@westermarck.com">Fredrik Westermarck</a> * @author <a href="mailto:fredrik@westermarck.com">Fredrik Westermarck</a>
* @author Nikolay Metchev * @author Nikolay Metchev
* @author Matthew Hawthorne
* @since 2.0 * @since 2.0
* @version $Id: ArrayUtils.java,v 1.14 2003/06/25 23:32:08 scolebourne Exp $ * @version $Id: ArrayUtils.java,v 1.15 2003/06/25 23:33:47 scolebourne Exp $
*/ */
public class ArrayUtils { public class ArrayUtils {
@ -905,4 +906,72 @@ public static boolean contains(final Object[] array, final Object objectToFind)
return (indexOf(array, objectToFind) != -1); return (indexOf(array, objectToFind) != -1);
} }
// Primitive/Object converters
// ----------------------------------------------------------------------
/**
* <p>Converts an array of object Booleans to primitives.</p>
*
* <p>This method returns <code>null</code> if <code>null</code> input.</p>
*
* @param array a <code>Boolean</code> array, may be <code>null</code>
* @return a <code>boolean</code> array
* @throws NullPointerException if array content is <code>null</code>
*/
public static boolean[] toPrimitive(final Boolean[] array) {
if (array == null) {
return null;
} else if (array.length == 0) {
return EMPTY_BOOLEAN_ARRAY;
}
final boolean[] result = new boolean[array.length];
for (int i = 0; i < array.length; i++) {
result[i] = array[i].booleanValue();
}
return result;
}
/**
* <p>Converts an array of object Booleans to primitives handling null.</p>
*
* <p>This method returns <code>null</code> if <code>null</code> input.</p>
*
* @param array a <code>Boolean</code> array, may be <code>null</code>
* @param valueForNull the value to insert if <code>null</code> found
* @return a <code>boolean</code> array
*/
public static boolean[] toPrimitive(final Boolean[] array, final boolean valueForNull) {
if (array == null) {
return null;
} else if (array.length == 0) {
return EMPTY_BOOLEAN_ARRAY;
}
final boolean[] result = new boolean[array.length];
for (int i = 0; i < array.length; i++) {
Boolean b = array[i];
result[i] = (b == null ? valueForNull : b.booleanValue());
}
return result;
}
/**
* <p>Converts an array of primitive booleans to objects.</p>
*
* <p>This method returns <code>null</code> if <code>null</code> input.</p>
*
* @param array a <code>boolean</code> array
* @return a <code>Boolean</code> array
*/
public static Boolean[] toObject(final boolean[] array) {
if (array == null) {
return null;
} else if (array.length == 0) {
return EMPTY_BOOLEAN_OBJECT_ARRAY;
}
final Boolean[] result = new Boolean[array.length];
for (int i = 0; i < array.length; i++) {
result[i] = (array[i] ? Boolean.TRUE : Boolean.FALSE);
}
return result;
}
} }

View File

@ -64,10 +64,11 @@
/** /**
* Unit tests {@link org.apache.commons.lang.ArrayUtils}. * Unit tests {@link org.apache.commons.lang.ArrayUtils}.
* *
* @author <a href="mailto:scolebourne@joda.org">Stephen Colebourne</a> * @author Stephen Colebourne
* @author Moritz Petersen * @author Moritz Petersen
* @author Nikolay Metchev * @author Nikolay Metchev
* @version $Id: ArrayUtilsTest.java,v 1.6 2003/03/23 21:47:30 scolebourne Exp $ * @author Matthew Hawthorne
* @version $Id: ArrayUtilsTest.java,v 1.7 2003/06/25 23:33:47 scolebourne Exp $
*/ */
public class ArrayUtilsTest extends TestCase { public class ArrayUtilsTest extends TestCase {
@ -80,8 +81,8 @@ public static void main(String[] args) {
} }
public static Test suite() { public static Test suite() {
TestSuite suite = new TestSuite(ArrayUtilsTest.class); TestSuite suite = new TestSuite(ArrayUtilsTest.class);
suite.setName("ArrayUtils Tests"); suite.setName("ArrayUtils Tests");
return suite; return suite;
} }
@ -706,4 +707,47 @@ public void testContains() {
assertEquals(true, ArrayUtils.contains(array, null)); assertEquals(true, ArrayUtils.contains(array, null));
assertEquals(false, ArrayUtils.contains(array, "notInArray")); assertEquals(false, ArrayUtils.contains(array, "notInArray"));
} }
// testToPrimitive/Object for boolean
// -----------------------------------------------------------------------
public void testToPrimitive_boolean() {
assertEquals(null, ArrayUtils.toPrimitive(null));
assertSame(ArrayUtils.EMPTY_BOOLEAN_ARRAY, ArrayUtils.toPrimitive(new Boolean[0]));
assertTrue(Arrays.equals(
new boolean[] {true, false, true},
ArrayUtils.toPrimitive(new Boolean[] {Boolean.TRUE, Boolean.FALSE, Boolean.TRUE}))
);
try {
ArrayUtils.toPrimitive(new Boolean[] {Boolean.TRUE, null});
fail();
} catch (NullPointerException ex) {}
}
public void testToPrimitive_boolean_boolean() {
assertEquals(null, ArrayUtils.toPrimitive(null, false));
assertSame(ArrayUtils.EMPTY_BOOLEAN_ARRAY, ArrayUtils.toPrimitive(new Boolean[0], false));
assertTrue(Arrays.equals(
new boolean[] {true, false, true},
ArrayUtils.toPrimitive(new Boolean[] {Boolean.TRUE, Boolean.FALSE, Boolean.TRUE}, false))
);
assertTrue(Arrays.equals(
new boolean[] {true, false, false},
ArrayUtils.toPrimitive(new Boolean[] {Boolean.TRUE, null, Boolean.FALSE}, false))
);
assertTrue(Arrays.equals(
new boolean[] {true, true, false},
ArrayUtils.toPrimitive(new Boolean[] {Boolean.TRUE, null, Boolean.FALSE}, true))
);
}
public void testToObject_boolean() {
assertEquals(null, ArrayUtils.toObject(null));
assertSame(ArrayUtils.EMPTY_BOOLEAN_OBJECT_ARRAY, ArrayUtils.toObject(new boolean[0]));
assertTrue(Arrays.equals(
new Boolean[] {Boolean.TRUE, Boolean.FALSE, Boolean.TRUE},
ArrayUtils.toObject(new boolean[] {true, false, true}))
);
}
} }