gpt4 book ai didi

java - 编写 Parcelable 时出现 StackOverflowError

转载 作者:太空宇宙 更新时间:2023-11-04 12:44:19 25 4
gpt4 key购买 nike

我有两个类,假设它们如下所示:

电影.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。

问题

如何避免嵌套类出现问题?

最佳答案

不要将Movie存储在Actor内。它们之间的双向关系导致了错误。

此外,Actor 应该存储 Movie 甚至没有意义。现实生活中的 Actor 可以出演很多电影,也可以不出演,或者只从事电视表演。

关于java - 编写 Parcelable 时出现 StackOverflowError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36492256/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com