我是将字符串的arraylist保存到本地数据库的1列中。我这样做有些问题。有人能告诉我哪里出错了吗?
private String serializeArray(List<String> array) {
try {
ByteArrayOutputStream bytesOut = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(bytesOut);
oos.writeObject(array);
oos.flush();
oos.close();
return Base64.encodeToString(bytesOut.toByteArray(), Base64.NO_WRAP);
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
private ArrayList<String> deserializeArray(String string) {
Log.d("USERDAO", string);
try {
ByteArrayInputStream bytesIn = new ByteArrayInputStream(Base64.decode(string, Base64.NO_WRAP));
ObjectInputStream ois = new ObjectInputStream(bytesIn);
return (ArrayList<String>) ois.readObject();
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
在deserialise数组上返回Arraylist时,我得到一个空指针异常。 serialiseArray方法确实返回一个字符串,但我不确定它是否正确。
答案 0 :(得分:0)
当我在eclipse中运行时,我在这一行得到了java.lang.ClassCastException:
return (ArrayList<String>) ois.readObject();
readObject()方法试图返回一个Arrays $ ArrayList(无论是什么),你的演员阵容导致它破坏。如果你将deserialise的强制转换和返回类型更改为List,你会发现它一切正常。