Test1.javapackagecom.test;importjava.util.HashMap;publicclassTest1{publicstaticHashMaphm=newHashMap();publicsynchronizedstaticvoidadd(Stringuid,Test2t){hm.p...
Test1.java
package com.test;
import java.util.HashMap;
public class Test1 {
public static HashMap hm = new HashMap();
public synchronized static void add(String uid, Test2 t){
hm.put(uid, t);
}
public static Test2 get(String uid){
return (Test2)hm.get(uid);
}
}
Test2.java
package com.test;
public class Test2 {
public String str;
public String getStr() {
return str;
}
public void setStr(String str) {
this.str = str;
}
}
Test3.java
package com.test;
public class Test3 {
public static void main(String args[]){
Test2 t = new Test2();
t.setStr("test");
Test1.add("1", t);
System.out.println("state changed");
}
}
Test5.java
package com.test;
public class Test5 {
public static void main(String args[]){
Test2 t2 = Test1.get("1");
System.out.println("str:"+t2.getStr());
}
}
我现在想做的是在Test3中修改Test2中str的值,然后把修改后的Test2保存到Test1中的hm中,然后在Test5中获取改变后的Test2,先运行Test3没问题,再运行Test5时报错,System.out.println("str:"+t2.getStr());这一句报空指针异常,检查了一下发现Test2为null,请问各位大神,有没有什么办法可以让我的这种想法实现呢?
就像是内存共享,一个类变量改变时我在另一个类中也能发现这种改变,只是java不能操作内存,所以不知道究竟该怎么做...
展开