小编典典
toString()这种方法依赖于的实现,toString()并且在大多数情况下可能是有损的。
这里不可能有无损解决方案。但更好的方法是使用对象序列化
将对象序列化为字符串
private static String serialize(Serializable o) throws IOException {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(baos);
oos.writeObject(o);
oos.close();
return Base64.getEncoder().encodeToString(baos.toByteArray());
}
将字符串反序列化为对象
private static Object deserialize(String s) throws IOException,
ClassNotFoundException {
byte[] data = Base64.getDecoder().decode(s);
ObjectInputStream ois = new ObjectInputStream(
new ByteArrayInputStream(data));
Object o = ois.readObject();
ois.close();
return o;
}
在此,如果用户对象具有临时字段,则它们将在过程中丢失。
旧答案
一旦使用toString()将HashMap转换为String;不是您可以将其从该String转换回Hashmap,而只是将其转换为String表示形式。
您可以将对HashMap的引用传递给method,也可以对其进行序列化
这是toString()的描述toString()
这是带有序列化说明的示例代码。
并将hashMap作为arg传递给方法。
public void sayHello(Map m){
}
//calling block
Map hm = new HashMap();
sayHello(hm);
2020-10-20