有没有办法将toString转换回Java中的对象?
例如:
Map<String, String> myMap = new HashMap<String, String>();
myMap.put("value1", "test1");
myMap.put("value2", "test2");
String str = myMap.toString();
有没有办法将此String转换回Map?
答案 0 :(得分:7)
简答:不。
答案稍长:不使用toString
。如果有问题的对象支持序列化,那么可以从序列化的字符串返回到内存中的对象,但这是一个完整的'蜡球'。了解序列化和反序列化以了解如何执行此操作。
答案 1 :(得分:1)
没有。
toString()仅用于记录和调试目的。它不用于序列化对象的统计信息。
答案 2 :(得分:0)
不。除了解析myMap.toString()
返回的这个字符串并将解析后的值放回到地图中。这里似乎并不复杂,因为String
中只有Map
个,因此myMap.toString()
的输出应该是非常易读/可解析的。
但总的来说,这不是一个好主意。你为什么要这样做?
答案 3 :(得分:0)
字符串也是一个对象。并且不可能从其字符串表示中获取原始对象(通过toString()
)。您可以通过考虑在对象中存储(或可以)存储的信息量来获得此信息,但字符串表示的时间有多短。
答案 4 :(得分:0)
是不可能的; 尝试解析;类似的东西:
public static Map<String,String> parseMap(String text) {
Map<String,String> map = new LinkedHashMap<String,String>();
for(String keyValue: text.split(", ")) {
String[] parts = keyValue.split("=", 2);
map.put(parts[0], parts[1]);
}
return map;
}
答案 5 :(得分:0)
您是否考虑过将自己的版本编写到转换实用程序中?
String mapToString(HashMap<String,String> map)
HashMap<String,String> stringToMap(String mapString)
答案 6 :(得分:0)
public class CustomMap<K, V> extends HashMap<K, V>{
public String toString(){
//logic for your custom toString() implementation.
}
}
有一个扩展HashMap的类并覆盖toString()方法。然后,您可以执行以下操作并实现您想要的目标,
CustomMap<String, String> myMap = new CustomMap<String, String>();
myMap.put("value1", "test1");
myMap.put("value2", "test2");
String str = myMap.toString();