最近在看一个项目,发现有个类以为是多余的,之后问了人才知道,原来那是引用,简介使用了被引用的对象,修改里面的数据。
下面给出一个例子,该例子除了有引用这个问题,还有继承的问题。
包名:aa
父类:Yingyong
子类:YingyongSun
package aa;
import java.util.ArrayList;
import java.util.List;
public class Yingyong {
private List<String> lists;
public Yingyong(){
}
public List<String> getMs(){
if(this.lists == null){
lists = new ArrayList<String>(3);
}
return this.lists;
}
}
子类:
package aa;
public class YingyongSun extends Yingyong {
public YingyongSun(){
}
}
使用:另起一个类,在main方法里面:
public static void main(String[] args) {
// TODO Auto-generated method stub
//---------------------
YingyongSun yySun = new YingyongSun();
List<String> yingyongImpl = yySun.getMs();
yingyongImpl.add("ni hao");
yingyongImpl.add("zhen de shi ying yong????");
for(int i=0;i<yySun.getMs().size();i++){
s(yySun.getMs().get(i));
}
}
子类继承于父类,所以getMs()方法也适用于子类。
在main方法,其实yingyongImpl是一个引用,它add了东西,也意味着子类(父类也行)的List<String>的内容增加。
输出结果:
ni hao
zhen de shi ying yong????
这里有一篇文档,可以读读: