Incredibly late to the party (my apologies) but a more generic solution than those provided here can be implemented (will work with primitives and non-primitives alike):
public static void swap(final Object array, final int i, final int j) {
final Object atI = Array.get(array, i);
Array.set(array, i, Array.get(array, j));
Array.set(array, j, atI);
}
You lose compile-time safety, but it should do the trick.
Note I: You'll get a NullPointerException
if the given array
is null
, an IllegalArgumentException
if the given array
is not an array, and an ArrayIndexOutOfBoundsException
if either of the indices aren't valid for the given array
.
Note II: Having separate methods for this for every array type (Object[]
and all primitive types) would be more performant (using the other approaches given here) since this requires some boxing/unboxing. But it'd also be a whole lot more code to write/maintain.