java内部实现java.awt.Button?

时间:2013-12-31 09:12:32

标签: java events button listener

java的{​​{1}}实施中,为什么java.awt.Button对象被标记为瞬态?

来自impl:ActionListener

2 个答案:

答案 0 :(得分:2)

transient中的Java关键字用于表示不应序列化字段。

变量可能被标记为瞬态,表示它们不属于对象的持久状态。

此处,ActionListener实例是适合的候选者,用于标记为 transient 。我们没有任何目的坚持下去。当类实现Serializable时我们使用transient关键字,我们不希望该成员被持久化。我们将其标记为transient字段。

除此之外,java.awt.Buttonjava.awt.Component的子类,它实现了Serializable接口。因此,要限制Button实例的actionListener成员的序列化 actionListener 字段标记为 transient 。希望你理解

答案 1 :(得分:1)

添加了关键字transient,以禁止正常的序列化:相反,该字段的序列化在readObjectwriteObject中完成。

原因是使用AWTEventMulticaster来构建事件侦听器的结构。 readObject和writeObject方法也将actionListener的序列化委托给该类。