【问题标题】:Does importing a non-serializable class in a class that implements Serializable breaks Serialization?在实现 Serializable 的类中导入不可序列化的类会破坏序列化吗?
【发布时间】:2019-03-05 09:32:13
【问题描述】:

在实现 Serializable 的类中导入不可序列化的类会破坏序列化吗?

import com.xyz.NotSerializableClass;

public class SerializableClass implements Serialiazble{

   public SerializableClass(NotSerializableClass notSerialiazble){
       //do something to notSerialiazble
  }
}

我是否仍然可以使用 SerializableClass 的实例作为额外的 Intent 传递?

【问题讨论】:

    标签: java android android-intent serialization


    【解决方案1】:

    这取决于您对NotSerializableClass 所做的具体操作。只要SerializableClass 不保留对NotSerializableClass 的引用就可以了,但是可以通过许多微妙的方式保留引用,例如:

    • 在构造函数中定义的 Lambda 表达式中引用变量 notSerialiazble
    • 在构造函数中创建的匿名内部类中引用变量notSerialiazble

    当然还有一些不那么微妙的方法:

    • NotSerializableClass 添加为字段
    • NotSerializableClass 添加为SerializableClass 内部类中的字段

    可能还有更多,这些只是我的想法

    【讨论】:

    • 如sn-p所示,我将其作为构造函数的参数。我将它映射到另一个实现 Serializable 的 Class 对象,仅此而已。我没有保留任何参考资料。
    • 那么你应该是安全的。
    • 感谢您详细说明保留参考的不同场景。
    猜你喜欢
    • 2012-02-17
    • 2013-08-28
    • 2016-07-12
    • 1970-01-01
    • 1970-01-01
    • 2016-02-04
    • 2011-12-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多