public static HashMap hmData = new HashMap();

解决方案 »

  1.   

    我也考虑过New一个对象,但这样每次加载这个类的时候都会新生成一个对象,原来的数据得不到保留了。谢谢maowu(猫呜) !!
      

  2.   

    不用static怎么保证HashMap中的内容在对象删除之后还一直保留在内存中啊??
      

  3.   

    搂主,不会的。只会new一次。
      

  4.   

    public static HashMap hmData =new HashMap();这样就可以了啊JIVE的缓存机制就是这样的啊
      

  5.   

    我也考虑过New一个对象,但这样每次加载这个类的时候都会新生成一个对象,原来的数据得不到保留了。   你也说啦 static 属性只在类被加载的情况下才New阿。你的类要加载几次?嗬嗬。
      

  6.   

    所谓加载,是类被装载到JVM中达到可以使用的情况。每次New并不是装载,只是生成一个实例!
      

  7.   

    public static HashMap hmData =new HashMap();
    不管你是不是用static变量 你都必须要new一次啊 楼主有什么问题吗
      

  8.   

    楼主读一下thinking in java可能好一些。
      

  9.   

    我试过用public static HashMap hmData =new HashMap();了,但第二次再调用的时候原来的值就没有了
    class test{
    public static HashMap hmData =new HashMap();
      public static void main(){
    //  hmData.put("1","one");
    //  hmData.put("2","two");
    //  hmData.put("3","three");
      if(hmData.contain("1")){
         System.out.println(hmData.get("1"));
      }  
     }
    }我在第一次调用的时候往里面加了三对数据,结果打印出来"one",
    第二次运行的时候把加数据的几行注释掉,结果是null啊,这是不是说明第一次的数据没保留呢?请大家指点,谢谢!
      

  10.   

    faint,你重新启动了虚拟机,原来的数据肯定没有保留啊。怎么可能保留?
    用本地文件吧。
      

  11.   

    你第二次运行的时候,JVM已经退出
    静态变量或代码的初始化只在加载它所属类被JVM加载时进行注意:往HashMap里面放一些数据,如果是多线程(如jsp/servlet),一定要根据不同情况进行同步处理。
    如:public static HashMap hmData =new HashMap();synchronized(hmData){
      hmData.put("1","one");  
    }或synchronized public void addData(){
      hmData.put("1","one"); 
    }
      

  12.   

    static 只会在类加载的时候调用,你从新启动虚拟机,肯定类又会重新加载
    在实际情况下你不会经常启动虚拟机吧
      

  13.   

    “第二次运行的时候把加数据的几行注释掉,结果是null啊,这是不是说明第一次的数据没保留呢?”
    这样当然不会保留了。
    倘若你想保留的话,实现串行化方法,把数据存到磁盘上,用的时候再反序列化