java的transient

时间:2021-09-29 18:13:14

今天遇到个了一个问题,在使用Swing的drap and drop处理JTree的时候,我的TreeNode中的UserObject中引用了java.awt.Image类。

然后在dnd的时候会报java.io.NotSerializableException.

由于不太了解dnd的data transfer,所以没解决这个问题

最后发现java有transient关键字.

copy来一段介绍

/*transient
Java语言的关键字,用来表示一个域不是该对象串行化的一部分。当一个对象被串行化的时候,transient型变量的值不包括在串行化的表示中,然而非transient型的变量是被包括进去的 class A implements Serializable {
private String name;
transient private String address;
} 那么你在串行化(IO流等)A类时 给它的name和address属性赋值,那么你在提取A时,拿到了name属性,但是却拿不到address属性*/

把Image的对象声明为transient,问题解决。