我正在使用 toString()
方法将类对象存储到字符串中。现在,我想将字符串转换为该类对象。
如何做到这一点?请帮我提供源代码。
最佳答案
I am storing a class object into a string using toString() method. Now, I want to convert the string into that class object.
您的问题模棱两可。这可能意味着至少两件不同的事情,其中一件是……嗯……对你来说是一个严重的误解。
如果你这样做了:
SomeClass object = ...
String s = object.toString();
那么答案是没有简单的方法可以将s
转回SomeClass
的实例。即使 toString()
方法为您提供了那些时髦的“SomeClass@xxxxxxxx”字符串之一,您也无法做到这一点。 (该字符串不编码对象的状态,甚至不编码对象的引用。xxxxxxxx 部分是对象的身份哈希码。它不是唯一的,不能神奇地变回引用到对象。)
您可以将 toString
的输出转回对象的唯一方法是:
- 对
SomeClass.toString()
方法进行编码,以便在它生成的 String 中包含对象的所有相关状态,并且 - 编写一个构造函数或工厂方法,以
toString()
方法生成的格式显式解析字符串。
这可能是一个不好的方法。当然,为非平凡的类做这件事需要做很多工作。
如果你做了这样的事情:
SomeClass object = ...
Class c = object.getClass();
String cn = c.toString();
然后你可以得到相同的 Class
对象(即在 c
中的那个),如下所示:
Class c2 = Class.forName(cn);
这为您提供了 Class
,但没有神奇的方法可以使用它来重建原始实例。 (很明显,类名中不包含对象的状态。)
如果您正在寻找一种方法来序列化/反序列化任意对象而无需自己编写 unparse/parse 方法,那么您不应该完全使用 toString()
方法。以下是您可以使用的一些替代方案:
- @Nishant 答案中的链接中描述的 Java 对象序列化 API。
- @fatnjazzy 的回答中描述的 JSON 序列化。
- 像 XStream 这样的 XML 序列化库。
- 一个 ORM 映射。
这些方法中的每一种都有优点和缺点......我不会在这里讨论。
关于java - 将字符串转换为类对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5401467/