2014-06-10 28 views
-2

int enumerate(Thread[] list)函數使用關於活動線程的信息更新指定的list[](調用函數的)信息。怎麼可能? list[]作爲參數傳遞給枚舉函數,而不引用它,函數只返回一個int值。因此,對list[]進行的更改如何反映回調用函數list[]ThreadGroup的enumerate()方法是如何工作的?

+0

你的代碼在哪裏? – Eliyahu

+0

[不要使用ThreadGroup](http://stackoverflow.com/questions/3265640/wh y-threadgroup-is-being-criticized) – m0skit0

+1

你知道Java是通過值傳遞,但使用對象引用? http://stackoverflow.com/questions/40480/is-java-pass-by-reference-or-pass-by-value – Raedwald

回答

0

在Java中的一切是按值傳遞,但你混淆一個參考對象實例對象實例本身

在你的情況下,數組list[]的引用是通過值傳遞的,這意味着無論你修改引用(例如做list[] = new list[5],當方法結束時,這個新引用將會丟失,因爲它被傳遞值(即原始值的副本已發送到該方法)

但是,您確實可以修改此引用指向的對象實例(例如list[5] = new Thread()),並且當該方法返回時,此對象將保持修改(如果對象是可變的,那就是)