java中的对象存入的到底是什么,比如我新建一个对象,把它存到文件,它的存得是什么。
我有2个类(学生类,课程类,都是自己写的)的对象,第一个学生类的对象有姓名和班级,第二个课程类的对象有课程编号和名称。我把两个对象依次存进文件,文件里存的是对象名呀,还是...
我有2个类(学生类,课程类,都是自己写的)的对象,第一个学生类的对象有姓名和班级,第二个课程类的对象有课程编号和名称。我把两个对象依次存进文件,文件里存的是对象名呀,还是对象里面的内容?如果从文件读出来,怎么确定是哪个类的东西?
展开
2011-12-22
展开全部
文件里能存什么?不就是字符串
你把对象存入文件,实际存入的是对象的toString方法返回的内容即“对象名@一串16进制的地址”,这种内容是无法还原的。
想要还原,就需要重写类的toString方法,例如class A有三个属性:String a;int b;String c;
在类A中重写toString方法 return "{A:[a="+this.a+";b="+this.b+";c="+this.c+"]}";
这样,存入到文件中就很清析了,每一个大括号中的内容就是一个对象,大括号的内容最前面部分是对象的类名,后面的中括号中跟的是类的每个属性的值,各属性之间用分号分隔,读取的时候就可以按这种规则来读取了。但是有一定的局限性,如果属性值中含有特殊字符,如大括号,中括号或者分号,那么就需要对这些符号进行处理,例如使用& # 1 2 3;(去掉中间的空格)代替属性值中的大括号。
另一种方法,使用xml格式存对象,即toString方法返回的是对象的xml表示
如
<object>
<class>A</class>
<a>xxx</a>
......
<object>
表示一个A对象
读取的时候,直接使用XML解析就能很方便地解析出了。
你把对象存入文件,实际存入的是对象的toString方法返回的内容即“对象名@一串16进制的地址”,这种内容是无法还原的。
想要还原,就需要重写类的toString方法,例如class A有三个属性:String a;int b;String c;
在类A中重写toString方法 return "{A:[a="+this.a+";b="+this.b+";c="+this.c+"]}";
这样,存入到文件中就很清析了,每一个大括号中的内容就是一个对象,大括号的内容最前面部分是对象的类名,后面的中括号中跟的是类的每个属性的值,各属性之间用分号分隔,读取的时候就可以按这种规则来读取了。但是有一定的局限性,如果属性值中含有特殊字符,如大括号,中括号或者分号,那么就需要对这些符号进行处理,例如使用& # 1 2 3;(去掉中间的空格)代替属性值中的大括号。
另一种方法,使用xml格式存对象,即toString方法返回的是对象的xml表示
如
<object>
<class>A</class>
<a>xxx</a>
......
<object>
表示一个A对象
读取的时候,直接使用XML解析就能很方便地解析出了。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询