0

私のシナリオ: サーブレットと 2 つの通常のクラスがあります。X サーブレット y クラス Z クラス。

X Servlet code :

    Y y=new Y();
    y.setMap(Map);//Value exists for Map[Found out by sysout]

 Y Class : 
    public void setMap(HashMap<String,String> hash){
    this.hash=hash;
    System.out.println("Set:::"+this.hash.toString());
}

     public HashMap<String, Boolean> getMap(){
          System.out.println("Bean Class:::"+hash.toString());
          return hash;
    }

Z Class: 

Y bean=new Y();
HashMap result=bean.getMap();
System.out.println(result);

結果は null になります。nullになる理由を誰でも説明できますか。

4

1 に答える 1

1

Y.setMapそのように静的にすることができます。

class Y {
    private static HashMap<String, Object> map;

    public static void setMap(HashMap<String, Object> hash) {
        map = hash;
    }

    public static HashMap<String, Object> getMap() {
        return map;
    }
}

サーブレットはマップを設定できます。

 Y.setMap(map);

他のクラスは次を使用してアクセスできます

HashMap<String, Object> result = Y.getMap();
于 2013-09-14T14:31:46.297 に答える