java将字符串转成对象_java – 将字符串转换为类对象

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();

那么答案是没有简单的方法把它转换成SomeClass的一个实例.即使toString()方法给你一个那些时髦的“SomeClass @ xxxxxxxx”字符串,你也无法做到这一点. (该字符串不对对象的状态进行编码,甚至不对对象的引用进行编码,xxxxxxxx部分是对象的身份哈希码,它不是唯一的,不能神奇地转回到对象的引用.)

唯一可以将toString的输出转换成对象的方式是:

>编写SomeClass.toString()方法,以便包含在其生成的String中的对象的所有相关状态,以及

>编写一个构造函数或工厂方法,它以由toString()方法生成的格式显式解析String.

这可能是一个坏的方法.当然,对于非平凡的课程来说,这是很多工作.

如果你这样做:

SomeClass object = ...

Class c = object.getClass();

String cn = c.toString();

那么你可以得到相同的Class对象(即c中的那个),如下所示:

Class c2 = Class.forName(cn);

这给了你Class,但是没有什么神奇的方式来重构原来的实例. (显然,类的名称不包含对象的状态.)

如果您正在寻找一种方法来序列化/反序列化任意对象,而无需自己编写解析/解析方法,那么您根本不应该使用toString()方法.以下是您可以使用的一些备选方案:

> Java对象序列化API,如@ Nishant答案中的链接中所述.

> @ fatnjazzy的回答中描述的JSON序列化.

> XStream的XML序列化库.

>一个ORM映射.

这些方法中的每一种都有优缺点,我不会进入这里.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值