Мне было интересно, в Java, можно ли в любом случае имитировать передачу по ссылке для массива? Да, я знаю, что язык не поддерживает это, но в любом случае я могу это сделать. Скажем, например, я хочу создать метод, который меняет порядок всех элементов в массиве. (Я знаю, что этот фрагмент кода не лучший пример, так как для этого есть лучшие алгоритмы, но это хороший пример того, что я хочу сделать для более сложных задач).
В настоящее время мне нужно создать такой класс:
public static void reverse(Object[] arr) {
Object[] tmpArr = new Object[arr.length];
count = arr.length - 1;
for(Object i : arr)
tmpArr[count--] = i;
// I would like to do arr = tmpArr, but that will only make the shallow
// reference tmpArr, I would like to actually change the pointer they passed in
// Not just the values in the array, so I have to do this:
for(Object i : tmpArr)
arr[count++] = i;
return;
}
Да, я знаю, что могу просто поменять значения, пока не доберусь до середины, и это будет намного эффективнее, но для других, более сложных целей, в любом случае, я могу манипулировать фактическим указателем?
Еще раз спасибо.