读书人

记录管理系统为何回出现如此情况?该如

发布时间: 2012-03-02 14:40:29 作者: rapoo

记录管理系统为何回出现如此情况?
问题:在反序列化时代码出现错误,系统提示为:setpicture(byte[]) in MMSMIDlet.mmsdatabase cannot be applied to(int)


class mmsdatabase {
private String address = " ";//定义成员变量
private String timestamp = " ";
private String text = " ";
private byte[] picture ={};



public mmsdatabase() {
}

public mmsdatabase(String _address, String _timestamp,String _text,byte[] _picture) {
this.address =_address;
this.timestamp =_timestamp;
this.text =_text;
this.picture =_picture;
}

//这里省略了getxxx()方法和setxxx()方法

public void serialize(DataOutputStream dos) throws IOException {//序列化
dos.writeUTF(address);
dos.writeUTF(timestamp);
dos.writeInt(picture.length);
dos.write(picture);
dos.writeUTF(text);
dos.flush();
}
public static mmsdatabase deserialize(DataInputStream dis) throws IOException {//反序列化
mmsdatabase database = new mmsdatabase();
database.setaddress(dis.readUTF());
database.settimestamp(dis.readUTF());
int length =dis.readInt();
database.picture =new byte[length];
database.setpicture(dis.read(picture));//问题出现在这里,应该如何修改
database.settext(dis.readUTF());
return database;
}
}




[解决办法]
public void serialize(DataOutputStream dos) throws IOException {//序列化
dos.writeUTF(address);
dos.writeUTF(timestamp);
dos.writeInt(picture.length);
dos.writeUTF(text);
dos.write(picture);
dos.flush();
}
public static mmsdatabase deserialize(DataInputStream dis) throws IOException {//反序列化
mmsdatabase database = new mmsdatabase();


database.setAddress(dis.readUTF());
database.setTimestamp(dis.readUTF());
database.setText(dis.readUTF());
int length =dis.readInt();
database.picture =new byte[length];
dis.readFully(database.picture);
return database;
}

楼主你为什么不把这个mmsdatabase类直接序列化呢?
ObjectOutputStream oos = null;
ObjectInputStream ois = null;
......
oos.writeObject(new mmsdatabase());
ois = new ObjectInputStream();
mmsdatabase tmp = (mmsdatabase)ois.readObject();

mmsdatabase类实现Serializable接口即可


[解决办法]
j2me本身不支持序列化接口,只好自己来写
敢问楼上的是做j2me的么?

读书人网 >J2ME开发

热点推荐