java - 将字符串转换为类对象

标签 java string object

我正在使用 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/

相关文章:

ruby - "each"函数在 Ruby(以及 Rails)中如何工作?

c# - 将数组添加到对象列表

java - Tomcat 7.0 连接池 - jdbc 驱动程序异常

java - 在 Java 的 While 循环中检查字符串的快捷方式?

java - 在 apache camel 的 atom 组件中将 TLS 版本更改为 1.2

C语言对字符串中的一个序列进行计数

php - 澄清一行——> 将 sql 数据设置为对象变量

c++ - 从新分配的内存分配给对象

java - 我的嵌套 for 循环没有执行,我不知道为什么

java - "Changing"复杂的不可变对象(immutable对象)