如题.
我的原意是:
public class Test
{
   public List testMethod()
   {
      List list = new ArrayList();
      String aa = new String("aaa");
      list.add(aa);//list中存的是aa这个引用,而这个引用指向的是"aaa",
      //我想在这里显示的把aa这个引用指向的对象给删除掉,应该如何操作?
      return list;
   }
   public static void main(String[] args)
   {
       Test test = new Test();
       System.out.println(test.testMethod().get(0));//在这里,我想如果在上面把的那个对象删除掉后,应该会有一个
                                                           //NullPointerException的
   }
}
请高手指点,谢谢了

解决方案 »

  1.   

    删除掉应该这样:import java.util.*;
    public   class   Test 

          public   List   testMethod() 
          { 
                List   list   =   new   ArrayList(); 
                String   aa   =   new   String("aaa"); 
                list.add(aa);//list中存的是aa这个引用,而这个引用指向的是"aaa", 
                //我想在这里显示的把aa这个引用指向的对象给删除掉,应该如何操作? 
                return   list; 
          } 
          public   static   void   main(String[]   args) 
          {
                  Test   test   =   new   Test();
                  System.out.println(test.testMethod().size());
                  List list=test.testMethod() ;
                  list.remove(0);
                  System.out.println(list.size());
                  System.out.println(list.isEmpty());
                  System.out.println(list.remove(0));//在这里,我想如果在上面把的那个对象删除掉后,应该会有一个IndexOutofBoundsException
          } 
      

  2.   

    TO:cursor_wang
    你对我的意思理解有误,我是想显示删除在内存中的那个字符串对象,而非集合中的对象.
      

  3.   

    纠正一下楼主:
    list里面存的不是引用,而是"aaa"这个对象。
      

  4.   

    java中方法参数既不是我们平时说的按值传,也不是按引用传,而是把对象的引用按值传递。(原始类型是按值传递)
    换个方法说就是:把对象的引用拷贝了一份传到方法中。
    所以,在java中:
    • A method cannot modify a parameter of primitive type (that is, numbers or boolean
    values).
    方法不能改变原始数据类型参数的值。
    • A method can change the state of an object parameter.
    方法可以改变对象参数的状态。
    • A method cannot make an object parameter refer to a new object.
    方法不能让对象参数指向一个新对象。在add()方法中,java把aa这个引用复制了一份,我们暂且叫它temp,因为temp也是指向"aaa"这个字符串的引用,所以把"aaa"加入到了list中,然后方法退出时temp被销毁了,这时aa还是指向"aaa"。如果改变aa把它指向null,"aaa"这个对象还是存在于list中,并不能改变它。
      

  5.   


     String   aa   =   new   String("aaa"); 
     list.add(aa);
     aa=null;加上 aa=null; 就会达到你想要的效果,只是"aaa"不会立即删除,至于什么时候删除就是java内存收机制的事了
      

  6.   

    把引用指向null,让gc自己收集