尝试写一个程序来创建java 3d对象(如球体、彩色立方体等)的二进制文件供以后使用。但是在这样做之前,我必须序列化对象,但我不能这样做,发生了错误。
让我们看看程序
下面的类是创建ColorCube对象并写入二进制文件的主类
import com.sun.j3d.utils.geometry.ColorCube;
import java.io.*;
public class SerializeDemo {
public static void main(String [] args) {
DoSerialize e = new DoSerialize();
e.cc = new ColorCube(1.4);
try {
FileOutputStream fileOut = new FileOutputStream("e://objectFile.txt");
ObjectOutputStream out = new ObjectOutputStream(fileOut);
try {
out.writeObject(e);
}catch(NotSerializableException i)
{i.printStackTrace();}
out.close();
fileOut.close();
}catch(IOException i)
{i.printStackTrace();}
}
}这是可序列化类
import com.sun.j3d.utils.geometry.ColorCube;
public class DoSerialize implements java.io.Serializable {
public ColorCube cc;
}错误是
java.io.NotSerializableException: com.sun.j3d.utils.geometry.ColorCube
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1180)
at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1528)
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1493)
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1416)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1174)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:346)
at SerializeDemo.main(SerializeDemo.java:25)
BUILD SUCCESSFUL (total time: 2 seconds)那么如何克服这个问题呢?请帮帮忙。谢谢......
发布于 2013-01-17 15:15:40
不幸的是,您试图序列化的对象没有实现可序列化接口,因此您不能通过标准的Java方法来序列化它。
您必须手动序列化对象,这在本例中意味着获取所有公共属性并将其保存到文件中,然后以相同的顺序读取它,或者尝试使用反射来获取所有可访问的成员并查找getter。
如果用于许多对象,第一种方法非常繁琐,第二种方法相对较慢。不幸的是,这两个都不能保证它会正常工作。
https://stackoverflow.com/questions/14373248
复制相似问题