从toString转换回Object

时间:2010-04-07 21:59:46

标签: java

有没有办法将toString转换回Java中的对象?

例如:

Map<String, String> myMap = new HashMap<String, String>();
myMap.put("value1", "test1");
myMap.put("value2", "test2");
String str = myMap.toString();

有没有办法将此String转换回Map?

7 个答案:

答案 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();