我一直在寻找一点,找不到答案…我已经创建了一个类,并成功地将我的类的数组列表保存到一个文件,但当我试图读取这个文件时,我一直得到:
E/Reading file(14768): java.io.WriteAbortedException: Read an异常;java.io.NotSerializableException:il.co.hyperactive.callmaagansmallgate.Gate
这是我的班级:
public class Gate implements Serializable {
/**
*
*/
private static final long serialVersionUID = 3L;
private double latitude;
private double longitude;
private String name;
private String phoneNumber;
public Gate(String name, double longitude, double latitude,
String phoneNumber) {
this.name = name;
this.longitude = longitude;
this.latitude = latitude;
this.phoneNumber = phoneNumber;
}
public Gate(String name) {
this.name = name;
}
public void setPlace(double latitude, double longitude) {
this.longitude = longitude;
this.latitude = latitude;
}
public String toString() {
return name + "nLatitude:" + latitude + "nLongitude:" + longitude
+ "nNumber:" + phoneNumber;
}
public double getLatitude() {
return latitude;
}
public void setLatitude(double latitude) {
this.latitude = latitude;
}
public double getLongitude() {
return longitude;
}
public void setLongitude(double longitude) {
this.longitude = longitude;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPhoneNumber() {
return phoneNumber;
}
public void setPhoneNumber(String phoneNumber) {
this.phoneNumber = phoneNumber;
}
}
Serializable需要一个默认构造函数,没有参数。所以一定要加上:
public Gate(){
}
这是必需的,因为编译器只在没有指定默认构造函数时才生成默认构造函数。序列化总是调用默认构造函数,然后通过getter和setter填充对象。