【问题标题】:Passing serialized object between applications在应用程序之间传递序列化对象
【发布时间】:2018-11-11 08:48:12
【问题描述】:

我正在尝试使用 Bundle 在应用程序之间传递一个序列化对象,其中一个应用程序中的对象是 Java,而另一个应用程序中的相同对象是 Kotlin。

传递一个对象 -

   Bundle bundle = new Bundle();  
    bundle.putSerializable(Constants.KEY_USER_PROFILE, getUserProfile());

用于获取对象 -

 Profile profile = (Profile) bundle.getSerializable(Constants.KEY_USER_PROFILE);

在第二种情况下,profile 类使用 kotlin 语言,而在第一种情况下,它使用 java

我在传递对象时遇到以下异常

java.lang.RuntimeException:无法启动活动 ComponentInfo{MainActivity}:java.lang.RuntimeException:Parcelable 在读取 Serializable 对象时遇到 IOException(名称 = base.model.user.Profile)
引起:java.lang.RuntimeException: Parcelable遇到IOException读取Serializable对象(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

【问题讨论】:

    标签: android serialization kotlin


    【解决方案1】:

    这是因为两种情况下的serialVersionUID不同,在序列化和反序列化类中应该相同才能使序列化工作。将此行放在您的两个类中

    public static final long serialVersionUID = 42L;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-05-02
      • 1970-01-01
      • 1970-01-01
      • 2011-11-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多