Java对所有对象型参数的传递都是传引用的(by reference),在传入的函数体内修改该对象会对指向该对象的所有instance进行修改。但如果是创建一个新instance给该对象呢?如:
Vector v = new Vector();
v.addElement(“a”);
change(v);
System.out.println(v.size());
..
private void change(vector v) {
v= new Vector();
}
最后的打印结果是1,即在函数内创建新实例的话并不影响函数体外的变量。这个sample是我在Fowler的Refactor一书里看到的,当时就写了个例子验证,果然。惭愧,写了这么多年程序,这个问题居然到今天才发现。