import java.io.*;
import java.util.*;
class Paper
{
private String code;
private String name;
private Date examDay;
Paper(String c,String n,Date d)
{
code=c;
name=n;
examDay=d;
}
};public class examPaper
{
public static void main(String[] args)
{
try
{
Paper[] paper=new Paper[2];
paper[0]=new Paper("2003048097","cq",new Date(2005,5,8));
paper[1]=new Paper("2003048097","cq",new Date(2005,5,8));
ObjectOutputStream out=new ObjectOutputStream(new FileOutputStream("2003972.txt"));
out.writeObject(paper);
out.close();
ObjectInputStream in=new ObjectInputStream(new FileInputStream("2003972.txt"));
Paper[] newPaper=(Paper[])in.readObject();
for(int i=0;i<newPaper.length;i++)
{
System.out.println(newPaper[i]);
}
}
catch(Exception e)
{
System.out.print("Error:"+e);
System.exit(1);
}
}
}
==========================================================================
是关于对象串行化和并行化的
编译没有问题,运行出现异常:Error:java.io.NotSerializableException: Paper
我实在是不明白什么原因,大虾们帮帮看看!谢谢了!
import java.util.*;
class Paper
{
private String code;
private String name;
private Date examDay;
Paper(String c,String n,Date d)
{
code=c;
name=n;
examDay=d;
}
};public class examPaper
{
public static void main(String[] args)
{
try
{
Paper[] paper=new Paper[2];
paper[0]=new Paper("2003048097","cq",new Date(2005,5,8));
paper[1]=new Paper("2003048097","cq",new Date(2005,5,8));
ObjectOutputStream out=new ObjectOutputStream(new FileOutputStream("2003972.txt"));
out.writeObject(paper);
out.close();
ObjectInputStream in=new ObjectInputStream(new FileInputStream("2003972.txt"));
Paper[] newPaper=(Paper[])in.readObject();
for(int i=0;i<newPaper.length;i++)
{
System.out.println(newPaper[i]);
}
}
catch(Exception e)
{
System.out.print("Error:"+e);
System.exit(1);
}
}
}
==========================================================================
是关于对象串行化和并行化的
编译没有问题,运行出现异常:Error:java.io.NotSerializableException: Paper
我实在是不明白什么原因,大虾们帮帮看看!谢谢了!
-->
class Paper implements Serializable
这里所抛出的NotSerializableException就是没有继承实现自此接口的关系,修改您的class Paper
源代码如下:
/**
*: ExamPaper.java
* 一个实验,接口继承自Serializable接口,
* 用以实现JAVA的持久化功能。
* 以下代码测试通过,环境为JDK1.4
*/import java.io.*;
import java.util.*;
/**
* 该类接口继承了Serializable接口,
* 实验将围绕该类展开。
*/
class Paper implements Serializable {
// 为了实验方便将fields均该为friendly
String code;
String name;
Date examDay;
// Constructor
Paper( String c, String n, Date d ) {
code = c;
name = n;
examDay = d;
}
}
public class ExamPaper {
/**
* 该方法实例化多个Paper object,将其串行化并保存至 2003972.txt 文件中,
* 然后在必要时将其还原(这里我们很快的将其还原)。
*/
public static void main( String[] args ) {
try {
// Initialize many Paper objects.
Paper[] oldPaper = new Paper[2];
oldPaper[0] = new Paper( "2003048097", "cq", new Date(2005,5,8) );
oldPaper[1] = new Paper( "2003048097", "cq", new Date(2005,5,8) );
// Display old Paper objects.
System.out.println( "Old objects:\n" );
for( int i = 0; i < oldPaper.length; i++ ) {
System.out.println( "old paper[" + i + "] is " + oldPaper[i] );
System.out.println( " code: " + oldPaper[i].code );
System.out.println( " name: " + oldPaper[i].name );
System.out.println( " day : " + oldPaper[i].examDay );
System.out.println();
}
// 开始串行化
ObjectOutputStream out =
new ObjectOutputStream(
new FileOutputStream(
"2003972.txt"));
out.writeObject( oldPaper );
out.close(); // 恢复
ObjectInputStream in =
new ObjectInputStream(
new FileInputStream(
"2003972.txt"));
Paper[] newPaper = (Paper[])in.readObject();
// Display new Paper objects.
System.out.println( "----------------------------------------" );
System.out.println( "New objects:\n" );
for( int i = 0; i < newPaper.length; i++ ) {
System.out.println( "new paper[" + i + "] is " + newPaper[i] );
System.out.println( " code: " + newPaper[i].code );
System.out.println( " name: " + newPaper[i].name );
System.out.println( " day : " + newPaper[i].examDay );
System.out.println();
}
} catch( Exception e ) {
System.out.print( "Error:" + e );
System.exit(1);
}
}
} /// @.@||~另外要注意的是,如果被串行化的对象中拥有对其他对象的引用,那么希望保证串行化成功的前提是必须保证其引用的其他类型均接口实现了Serializable接口,否则就要考虑是否使用关键字transient来使得某些对象不被串行化。