Android 关于序列化Location子类以便将其写入文件的问题

Android 关于序列化Location子类以便将其写入文件的问题,android,Android,据我所知,为了使用ObjectOutputStream将对象的ArrayList保存到文件中,ArrayList中的对象需要实现可序列化 我试图将位置的ArrayList保存到一个文件中,所以我将Location扩展到一个这样做的类中(除此之外没有其他内容)。所以我有一门课看起来像 import java.io.Serializable; import android.location.Location; public class MyLocation extends Location im

据我所知,为了使用ObjectOutputStream将对象的ArrayList保存到文件中,ArrayList中的对象需要实现可序列化

我试图将位置的ArrayList保存到一个文件中,所以我将Location扩展到一个这样做的类中(除此之外没有其他内容)。所以我有一门课看起来像

import java.io.Serializable;

import android.location.Location;

public class MyLocation extends Location implements Serializable{

/**
 * 
 */
private static final long serialVersionUID = 7599200646859829149L;

public MyLocation(Location l) {
    super(l);
    
}

} 
但现在,在我的位置,它在

public void onLocationChanged(Location loc) {
        locat = (MyLocation)loc;
我想它不喜欢打字吧?我不知道,我有点困惑。对不起,如果这是显而易见的,我没有这么久

serialVersionUID行是由Eclipse使用“添加生成的串行版本ID”生成的

更新: 正如我之前所说,我正在尝试从文件中读取/写入位置的arraylist。当我将数据写入一个文件时,我不会得到任何异常,但当我尝试读取它时,会得到一个异常。基本上,我有一个扩展ArrayList的类(因为为了Listview的目的,我需要对它进行解析)

public class LocationList extends ArrayList<MyLocation> implements Parcelable {


private static final long serialVersionUID = 1L;

但我担心我的演员阵容也有类似的问题,所以我暂时把它去掉了在没有类型转换的情况下引发异常,因此我想这不是我当前的问题。

传递给您的location对象是MyLocation实例吗?我想不会,因为系统提供了它。扩展类并不意味着可以从超类型转换。您真正想做的是:

   locat = new MyLocation(loc);

整个对象树需要是可序列化的,而不仅仅是顶级节点。因此位置中的所有内容都需要是可序列化的。谢谢,这很有效。我现在不确定为什么我不能从超级类型强制转换,但我会仔细阅读。这可能有点混乱,你可以在这里阅读更多:看起来像是一个很好的资源,谢谢。我知道了我有一个关于我位置的arraylist的读/写的后续问题,但是stackoverflow不会让我在几个小时内“回答我自己的问题”,因为我是新来的。因为它与此线程的标题有关,我不想再开始另一个,我明天早上会在这里发布。
FileInputStream fis;
    
    try {
        fis = context.openFileInput(fileName);
        ObjectInputStream is = new ObjectInputStream(fis);
        is.readObject();   // <--this is the line that throws an IO exception
        is.close();
waypoints = (LocationList) is.readObject(); 
   locat = new MyLocation(loc);