我正在尝试保存位置列表,但无法序列化位置。为了管理它,我创建了一个名为 simpleLocation 的类,它实现了序列化,并且只有纬度和经度的双精度:
public class simpleLocation implements Serializable
{
private static final long serialVersionUID = 10001L;
double lat = 0.0;
double lon = 0.0;
public simpleLocation()
{}
public void setLat(double l)
{
lat = l;
}
public void setLon(double l)
{
lon = l;
}
private double getLat()
{
return lat;
}
public double getLon()
{
return lon;
}
}
据我所知,我不需要其他任何东西,并且这个类应该是可序列化的。(话说回来,我对序列化的了解非常有限)。
我将位置的 ArrayList 转换为 simpleLocations 的 ArrayList,然后尝试将其写出:
// dropDownList is a Spinner
private void internalSave()
{
try{
// get my internal directory
String filename = "" + dropDownList.getSelectedItemPosition() + ".ser";
FileOutputStream fileOut = openFileOutput(filename, Context.MODE_PRIVATE);
ObjectOutputStream objectOut = new ObjectOutputStream(fileOut);
// convert Locations to simpleLocations
ArrayList<simpleLocation> simple = convertToSimpleLocation();
// write out
for(int i=0; i<simple.size(); i++)
{
objectOut.writeObject(simple.get(i));
}
objectOut.flush();
objectOut.close();
Toast.makeText(this, "Write complete", Toast.LENGTH_SHORT);
}catch (Exception e)
{
Toast.makeText(this, "Error with Internal Save:\n"+e.toString(), Toast.LENGTH_SHORT);
e.printStackTrace();
}
}
每次尝试使用此方法时,我都会收到 java.io.NotSerializeableException,但我不知道出了什么问题。我敢肯定这是我忽略的一些简单的事情,但如果有人能指出它,我将非常感激。
编辑:想通了,我确实需要在我的 simpleLocation 类中有一个 writeObject 方法。