当我用集合框架中的add方法相集合内加入元素时,到底是把这个元素的引用加进去了呢还是做了一个副本加进去。
以前接触过,好像是引用。不是很清楚,求教

解决方案 »

  1.   

    还有一点,就是在用Vector的时候,add加的是引用,还是拷贝副本?
      

  2.   

    是引用,集合加的不是对象,Vector也一样
      

  3.   

    package test;
    import java.net.*;
    import java.util.Vector;
    import java.io.*;
    import java.util.*;public class TestCon {
        public static void main(String[] args) throws Exception{
         //System.out.println(args[0]);
         Class c = Class.forName(args[0]);
         Collection coll = (Collection)c.newInstance();
         Person p = new Person("old_name");
         coll.add(p);
         p.setName("new_name");//修改外面的reference
            Iterator it = coll.iterator();
            Person pp = (Person)it.next() ;//得到集合里面的reference
            
            System.out.println(pp.getName());//test
        }   
    }class Person {
        String  name ;
        public Person(String name) {
         this.name = name;
        }
        public String getName() {
         return this.name;
        }
    public void setName(String name) {
    this.name = name ;
    }
    }/////////////////这个程序可以帮助你理解,
    输入的参数可以是各种集合(不包括Map)
    java.util.ArrayList 等等
    你会发现,各种集合都是引用因为外面的修改会影响集合里面