Categories
Technology

惭愧,一个Java基本问题

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一书里看到的,当时就写了个例子验证,果然。惭愧,写了这么多年程序,这个问题居然到今天才发现。

By Ling Zhang

本人服务于IBM中国软件实验室(上海)。本网页内容仅为个人思想,不代表IBM公司观点。

Leave a Reply

Your email address will not be published. Required fields are marked *

*