我想把一個對象放入一個文件,然後嘗試使用Externalizable接口讀取同一個對象,並且我得到一個Exception Car類的無效構造函數。在java中的外部化
import java.io.*;
class Base
{
int a;
}
class Car extends Base implements Externalizable
{
static int b;
String c="";
Car(int d,int e,String f)
{
a=d;
b=e;
c=f;
}
Car()
{super();}
public void writeExternal(ObjectOutput oos)
{
try
{
oos.writeInt(a);
oos.writeInt(b);
oos.writeObject(c);
}
catch(Exception e){}
}
public void readExternal(ObjectInput ois)
{
try
{
a=ois.readInt();
b=ois.readInt();
c=(String)ois.readObject();
}
catch(Exception e){}
}
}
class Main
{
public static void main(String args[])throws Exception
{
Car c1=new Car(1,2,"Manish");
FileOutputStream fos=new FileOutputStream("man.txt");
ObjectOutputStream oos=new ObjectOutputStream(fos);
oos.writeObject(c1);
FileInputStream fis=new FileInputStream("man.txt");
ObjectInputStream ois=new ObjectInputStream(fis);
Object o=ois.readObject();
Car c2=(Car)o;
System.out.println(c2.a+" "+c2.b+" "+c2.c);
}
}
有人可以解釋什麼是錯誤?
爲什麼不實現可序列化?但要回答你的問題,你需要一個調用超級構造函數的公共默認構造函數。 public Car(){super();} – user
因爲我正在學習Externalzable。 –