[英]Java object fromString method?
所以我意识到Object
类中有一个toString()
方法。 但是,如何设置fromString()
方法?
public String toString() {
return "";
}
toString()
而不是fromString()
什么意义? 或者我只是找不到它? 为了澄清我正在尝试使用Gson
,它不断将我的对象转换为字符串表示而不是对象。
请注意toString
文档中的以下内容:
结果应该是一个简洁但信息丰富的表示,便于人们阅读。
这种方法不太实用:它用于呈现人类可读的信息,对调试很有用。
一个更具目的性的API,似乎就是你所建议的,将是非常特定于上下文的。 通常你会看到类似于fromString
东西,例如参见各种parse
方法。
我们有一个通用的方法最接近的是对象序列化和反序列化API(教程这里 ,文档在这里 ),这仍然是敞开的具体实施:
序列化接口没有方法或字段,仅用于标识可序列化的语义。
这些都不能阻止你编写自己的 fromString
,但听起来你对Gson库有一个特定的问题。 从这里开始, 查看各种fromJson
重载。
这很难实施。 似乎逻辑上fromString(object.toString())
应该重建对象。 然后, toString()
然后必须拥有初始化该类所需的所有信息,而不仅仅是重要的东西。
例如,考虑一个ArrayList。 它的toString()
只提供它的内容,在你尝试初始化它之前看起来很好用,但是你需要正确设置它的capacity
,但是你无法从它的toString()
访问它。 但是出于封装原因,您不希望在其toString()
看到它。
没有这样的方法叫做fromString(),你需要自己实现它。 逻辑上的原因似乎很简单,人们总是需要按照要求实施它。
toString()
方法也为您提供了一种通用的方式来以某种方式表示和传达有关该对象的一些有用信息。 如果您需要与默认行为不同的行为,则可以覆盖它并提供您自己的实现。 另一方面,将每个String
转换为Object
表示并不是一般要求,因此fromString()方法不存在。
toString()
旨在使其成为可能,因此您可以使用println()
等将自己的自定义对象包含在文本输出中。
System.out.println("The value of my object is " + myObject);
大多数情况下,您不会在toString()
输出足够的信息,以便以后能够重新创建对象。 它通常只是对象的摘要。
将对象转换为非二进制格式和从非二进制格式转换对象分别称为“序列化”和“反序列化”。 你可以在这里阅读更多相关信息:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.