Hey,
I’m currently trying to learn SpiderMonkey, but I have a little issue with Serializing a HashMap
[java]import java.io.IOException;
import java.util.HashMap;
import com.jme3.network.connection.Client;
import com.jme3.network.connection.Server;
import com.jme3.network.events.MessageAdapter;
import com.jme3.network.message.Message;
import com.jme3.network.serializing.Serializable;
import com.jme3.network.serializing.Serializer;
public class HashMapSerializationTester extends MessageAdapter
{
@Serializable
public static class TestSerializationMessage extends Message
{
private final HashMap<String, Object> hashmap = new HashMap<String, Object>();
public TestSerializationMessage()
{
super(true);
}
}
@Override
public void messageReceived(Message msg)
{
TestSerializationMessage cm = (TestSerializationMessage) msg;
System.out.println("recieved: " + cm.hashmap.values() + " <- Error ");
}
public static void main(String[] args) throws IOException, InterruptedException
{
Serializer.registerClass(TestSerializationMessage.class);
Server server = new Server(5110, 5110);
server.start();
Client client = new Client(“localhost”, 5110, 5110);
client.start();
Thread.sleep(100);
server.addMessageListener(new HashMapSerializationTester(), TestSerializationMessage.class);
TestSerializationMessage message = new TestSerializationMessage();
message.hashmap.put(“messagetest1”, “adwwda”);
message.hashmap.put(“messagetest2”, 3.55f);
System.out.println("sent: " + message.hashmap.values());
client.send(message);
}
}
[/java]
Can somebody tell me how to fix this?
Oh now I found the problem
private final HashMap<String, Object> hashmap = new HashMap<String, Object>();
shoulnt be declared as final !! Thats why its not overwritten by serialisation
Thanks anyway ^.^
1 Like