考慮以下代碼:Java返回引用
package Prova;
import java.util.ArrayList;
public class Prova
{
private ArrayList<String> people;
public Prova() {
people=new ArrayList<String>();
}
public ArrayList<String> getPeople(){
return people;
}
public static void main(String[] args) {
Prova p=new Prova();
p.go();
}
public void go(){
ArrayList<String> temp=getPeople();
temp.add("jack");
System.out.print(getPeople());
}
}
它打印 「傑克」。
爲什麼?這不違反封裝嗎?如何通過價值回報它?
的Java包總是被引用傳遞,當涉及到的對象。你的代碼只是驗證這個事實。那麼你究竟期待什麼回報? – Churk 2012-03-31 12:36:45
@Churk [爪哇不傳遞通過引用](http://stackoverflow.com/q/40480/395760)!如果它是通過按引用,'getPeople()= ...'將是可能的,並且改變部件以指向另一個ArrayList的。對於參數傳遞,類似的反例存在,在我掛的問題(更不用說幾十個重複的)的十幾個中給出。 – delnan 2012-03-31 12:39:26
我只想重申@delnan的觀點。在Java中,引用(根本)是*指針的值傳遞給* – 2012-07-17 03:02:36