考虑以下代码: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