解決辦法是getter顧名思義得有返回值,然後賦給實參,兩者就擁有了相同的引用。
------解决方案-------------------- public void GetUser(List<User> list) { if(list==null){// 这里 list = new ArrayList<User>(); } User user = new User("张三"); list.add(user);
public void GetUser(List<User> list) //所以,这里的list和main方法的list是两个不同的变量,
//它们都指向main方法的new ArrayList<User>()对象
{
if(list==null){ //所以测试2的时候
list = new ArrayList<User>(); //这里是改变了GetUser的list指针的指向,
//但是并不改变main方法的list指针的指向
}
User user = new User("张三");
list.add(user); //所以当参数为null的时候,这里的list和main的list指向的对象已经不一样了
//main的list指向null对象
//而GetUser的list指向GetUser方法体中的new ArrayList<User>()对象
//而当参数不为null的时候,因为这里的list和main的list指向的都是main方法中
//的new ArrayList<User>()对象,所以在这里修改对象的属性,
//在main中也可以看到变化
}
------解决方案--------------------
------解决方案-------------------- List<User> list = null 这一句将list置成空了,这个值可以通过参数船体到GetUser()方法中,但是在方法中list = new ArrayList<User>();的这一句是实例化不是引用。他只在该方法中生效,是无法通过参数来传递到外面去的,所以你要将GetUser方法修改成返回一个List才行。