我尝试使用Bundle在应用程序之间传递序列化对象,其中在一个应用程序中,对象是Java,而在另一个应用程序中,同一个对象在Kotlin中。
传递对象 -
Bundle bundle = new Bundle();
bundle.putSerializable(Constants.KEY_USER_PROFILE, getUserProfile());
获取对象 -
Profile profile = (Profile) bundle.getSerializable(Constants.KEY_USER_PROFILE);
在第二种情况下,配置文件类使用kotlin语言,而第一种情况是使用java
我在传递对象时遇到异常
java.lang.RuntimeException:无法启动活动ComponentInfo {MainActivity}:java.lang.RuntimeException:Parcelable遇到IOException,读取Serializable对象(name = base.model.user.Profile)
引起:java.lang.RuntimeException:Parcelable在读取Serializable对象时遇到IOException(name = base.model.user.Profile)
Caused by: java.io.InvalidClassException: base.model.user.Profile; local class incompatible: stream classdesc serialVersionUID = 7285398503547917474, local class serialVersionUID = -1011142074531890510
答案 0 :(得分:1)
这是因为serialVersionUID在两种情况下都不同,序列化和反序列化类应该相同,以便序列化工作。把这一行放在你的两个班级
public static final long serialVersionUID = 42L;