Test1.java
package com.test;import java.util.HashMap;public class Test1 {
public static HashMap hm = new HashMap<String, Test2>();
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不能操作内存,所以不知道究竟该怎么做...
说的具体点好吗?
public static HashMap hm = new HashMap<String, Test2>();
这个不是吗??
有办法实现,只是你不应该用两个main方法去测试,写一个就可以了。
你写两个main方法去测是不对的。
1.第一个程序在运行的时候,把数据保存到磁盘文件中,这样第二个程序就可以读了
2.第一个程序写入数据之后,不能结束,而且还要开一个socket监听端口,然后第二个程序向这个监听端口发送数据请求,可以用RMI通信来做。就是搞服务端和客户端。楼主的明白?
非常感谢你的回答,你说的用一个main函数我试过了,行得通,但不是我的本意,还是很感谢你哈....