我希望找到一种方法将POJO(包含字符串,布尔值,整数)的值存储在首选变量中,然后我可以通过存储它时使用的密钥来检索它。 POJO包含许多String / boolean / int属性,因此我不想单独存储它们。我遇到的问题是唯一的首选变量类型是String,boolean,float和int。有没有办法将POJO转换为一个String,然后我可以根据它的密钥检索回来并转换回POJO,有点像铸造它> 1)填充POJO 2)将POJO转换为字符串 3)使用键值将String存储在首选项存储中(普通首选项存储) 4)需要时,将数据作为字符串从首选项存储中检索回来,并将其转换回POJO。
答案 0 :(得分:1)
不是最优雅的解决方案,但是:
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
objectOutputStream = new ObjectOutputStream(outputStream);
objectOutputStream.writeObject(instance);
objectOutputStream.flush();
val = Base64.encodeBase64String(outputStream.toByteArray()));
要反序列化:
byte[] data = Base64.decodeBase64(dataStr);
ObjectInputStream objectInputStream = null;
try
{
ByteArrayInputStream inputStream = new ByteArrayInputStream(data);
objectInputStream = new ObjectInputStream(inputStream);
return (T)objectInputStream.readObject();
}
finally {
if (objectInputStream != null)
objectInputStream.close();
}
其中T是对象类型。