我想知道,在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傳遞對象作爲通過值傳遞的引用。「 –