【问题标题】:Which is the proper way to mark transient?标记瞬态的正确方法是什么?
【发布时间】:2016-05-08 18:38:31
【问题描述】:

如果在不同的类中有多个引用(在下面的例子中是 pitfallOne、pitfallTwo 和 pitfallThree)对同一个对象的引用是否足以将其中一个标记为 transient 以防止该对象的序列化(考虑到这些类将被序列化)?如果不是,应该标记为transient

我不确定类结构在这里是否重要,所以就这样吧:

class Zero {
    ...
}

class One {
    ...
    Zero pitfallOne = new Zero();
}

class Two {
    ...
    One instOne = new One();
    transient Zero pitfallTwo = instOne.pifallOne;
}

class Three {
    ...
    Two instTwo = new Two();
    Zero pitfallThree = instTwo.pifallTwo;
}

【问题讨论】:

  • 您只能将引用的字段标记为瞬态,而不是对象。如果你想防止一个对象被序列化,你必须将每个可能指向它的字段标记为瞬态。

标签: java serialization transient


【解决方案1】:

瞬态标记附加到类的字段,而不是对象。由于您在每个类中都有一个新字段,因此应将其标记为瞬态。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-23
    • 2011-04-16
    • 2010-11-11
    • 2011-06-27
    • 1970-01-01
    • 2014-07-22
    • 2013-04-20
    • 1970-01-01
    相关资源
    最近更新 更多