【发布时间】:2016-07-29 06:48:33
【问题描述】:
我有两个类,假设它们看起来像这样:
电影.java
public class Movie implements Parcelable {
private int year;
private List<Actor> actors;
// Constructor, getters and setters, Parcelable implementation
}
Actor.java
public class Actor implements Parcelable {
private String name;
private Movie movie;
// Constructor, getters and setters, Parcelable implementation
}
现在,当我尝试将 Movie 写入 parcelable 时,我得到 StackOverflowError:
java.lang.StackOverflowError
at java.util.concurrent.ConcurrentHashMap.putVal(ConcurrentHashMap.java:1012)
at java.util.concurrent.ConcurrentHashMap.putIfAbsent(ConcurrentHashMap.java:1535)
at java.lang.ClassLoader.getClassLoadingLock(ClassLoader.java:463)
at java.lang.ClassLoader.loadClass(ClassLoader.java:404)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at android.os.Parcel.writeParcelable(Parcel.java)
atcom.example.android.data.model.Actor.writeToParcel(Actor.java:58)
at android.os.Parcel.writeTypedList(Parcel.java:1106)
at com.example.android.data.model.Movie.writeToParcel(Movie.java:70)
我知道这是嵌套类的问题,因为当它尝试将 Movie 写入 Parcel 时,它会尝试写入 Actor,但在 Actor 中它会再次尝试写入 Movie。
问题
如何避免嵌套类的问题?
【问题讨论】:
-
发布完整的错误日志
-
加了两行,其余同理。
标签: java android parcelable