我想知道,在java中,是否可以在任何情况下模拟数组的引用传递?是的,我知道这门语言不支持它,但无论如何我都可以做到。比如说,我想创建一个方法来颠倒数组中所有元素的顺序。 (我知道这段代码并不是最好的例子,因为有更好的算法可以做到这一点,但这是我想为更复杂的问题所做的事情的一个很好的例子)。在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;
}
是的,我知道我可以只交换值,直到我到了中间,这将是更有效的,但对于其他更复杂的目的,无论如何,我可以操纵实际的指针?
再次,谢谢。
数组从java.lang.Object继承。 Java中的对象总是通过引用传递。 – Dan
@丹:不! Java中引用to_对象被value_分隔。是的,这意味着完全不同的东西。 – polygenelubricants
这可以很好地解释它:http://stackoverflow.com/questions/40480/is-java-pass-by-reference/40523#40523“Java总是按值传递,难点在于理解Java传递对象作为通过值传递的引用。“ –