繁体   English   中英

Java中toString和serialize之间的区别

[英]Difference between toString and serialize in Java

我使用Jersey创建了一个响应JSON格式数据的JAR-RS Web服务。

当请求到达时,使用@Path注释,方法捕获请求处理它并返回一些内容。

例如,我在处理请求的方法中创建了一个名为jsonArrayJSONArray对象。 我可以使用return jsonArray.toString(); 获取String并将其发回。 我还可以使用return jsonArray和JAXB(所述annoation @XmlRootElement在JSONArray类和@Produces({ MediaType.APPLICATION_JSON})中所述方法)来自动序列JSON格式的对象。

我想知道手动发送回字符串和使用注释自动序列化有什么区别。(性能?)

不,没有产出差异。 主要区别在于return jsonArray可以被认为更具可读性(特别是对于其他程序员),而return jsonArray.toString()更明确。 前者的问题在于事情更加模糊,因为阅读代码的人需要理解获取jsonArray对象的内容会以静默方式序列化它。

方法之间的另一个区别是,让框架执行它可以保证框架中的最终更新将反映在事物序列化的方式中。 toString()方法最初并不是为了提供对象的序列化视图,以后可以用来获取对象,而是简单地提供对象的文本(甚至不完整)表示。

如果您使用的类不提供序列化,或者提供的序列化没有正确生成JSON(或您想要的任何格式),您始终可以创建自己的序列化。 将对象包装在属于您定义的类的对象内部,并使这样的类可序列化。 然后提供以下方法:

private void writeObject(ObjectOutputStream out)抛出IOException; private void readObject(ObjectInputStream in)抛出IOException,ClassNotFoundException;

而且,是的,他们应该是私人的。 在此处查看更多信息: 了解Java Serialization API的秘密

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM