Java对象fromString方法?

Java对象fromString方法?,java,json,gson,Java,Json,Gson,因此我意识到在对象类中有一个toString()方法。 但是,如何设置fromString()方法 public String toString() { return ""; } 拥有toString()而不是fromString()有什么意义?还是我就是找不到?为了澄清这一点,我尝试使用Gson,它不断地将我的对象转换为它的字符串表示形式,而不是作为对象。这将很难实现。fromString(object.toString())应该重构对象,这似乎是合乎逻辑的。然后,toString(

因此我意识到在
对象
类中有一个
toString()
方法。 但是,如何设置
fromString()
方法

public String toString() {
    return "";
}

拥有
toString()
而不是
fromString()
有什么意义?还是我就是找不到?为了澄清这一点,我尝试使用
Gson
,它不断地将我的对象转换为它的字符串表示形式,而不是作为对象。

这将很难实现。
fromString(object.toString())
应该重构对象,这似乎是合乎逻辑的。然后,
toString()
必须具有初始化该类所需的所有信息,而不仅仅是重要的内容


例如,考虑数组列表。它的

toString()
只提供它的内容,在您尝试初始化它之前,它似乎很好而且有用……例如,您需要正确设置它的
容量,但您无法从它的
toString()
访问它。但出于封装原因,您不希望在其
toString()
中看到这一点。

请注意for
toString
中的以下内容:

结果应该是一个简洁但信息丰富的表示,便于一个人阅读

这种方法不太实用:它用于显示人类可读的信息,例如用于调试

一个更为目的驱动的API,正如您所建议的,将是非常特定于上下文的。通常,您会看到类似于
fromString
的内容,例如,请参见各种
parse
方法

最接近常规方法的是对象序列化和反序列化API(教程,文档),该API仍为特定实现打开:

序列化接口没有方法或字段,仅用于标识可序列化的语义


所有这些都不妨碍您编写自己的
fromString
,但听起来您在Gson库方面有一个特定的问题。看看各种
fromJson
重载,开始吧。

没有名为fromString()的方法,您需要自己实现它。逻辑上的原因似乎很简单,即始终需要按照需求实现它

另外,
toString()
方法为您提供了一种通用的方式来表示和传递有关对象的一些有用信息。如果需要与默认行为不同的行为,可以重写它并提供自己的实现。另一方面,将每个
字符串
转换为
对象
表示并不是一般要求,因此不存在fromString()方法。

toString()
旨在通过使用
println()
等将您自己的自定义对象包含在文本输出中

System.out.println("The value of my object is " + myObject);
大多数情况下,您在
toString()
中输出的信息不足,无法在以后重新创建对象。它通常只是对象的摘要

将对象转换为非二进制格式和从非二进制格式转换为非二进制格式分别称为“序列化”和“反序列化”。您可以在此处阅读更多有关内容:


toString
提供了一种生成对象“描述”的方法,当您希望快速转储对象值时(主要是在调试时),该方法非常有用
fromString(String)
不存在,需要创建构造函数或静态工厂方法。Java随对象序列化而来,但现在,类似的东西通常是保存/加载对象的更好解决方案。没有合同规定,从
toString()
输出的
String
必须转换回它产生的对象。正如@MadProgrammer所提到的,如果您愿意,您可以研究序列化。不是每个对象都可以用字符串构造,但是每个对象都可以用字符串表示。这就是为什么每个对象都有一个toString方法,而很少有fromString方法。此外,即使对于可以从字符串构建的类,也不是每个字符串都可以强制转换为该类的对象。如何将字符串“两栖动物”转换为整数?更糟糕的是:
“[123456]”
是整数列表吗?渴望?字符串(例如
列表。添加(“123”)
)?为了使fromString能够重建列表,该字符串表示必须更加详细,这将使其对日志等人类可读格式的帮助大大降低。