美文网首页
JAVA-transient 关键字

JAVA-transient 关键字

作者: superlee01 | 来源:发表于2018-10-20 23:42 被阅读0次

    为什么要有transient关键字

    Java中,transient修饰的变量不会被序列化,即这些变量并不是序列化对象的一部分。
    下面看个小例子:

    class GalleryImage implements Serializable
    {
        private Image image;
        //缩略图对象
        private transient Image thumbnailImage;
    
        private void generateThumbnail()
        {
            // 生成缩略图
        }
        //反序列化
        private void readObject(ObjectInputStream inputStream)
                throws IOException, ClassNotFoundException
        {
            inputStream.defaultReadObject();
            generateThumbnail();
        }    
    }
    

    当GalleryImage对象序列化时,只有源图片image会发生序列化,缩略图thumbnailImage并不会序列化,这样可以节省对象占用空间(不一定恰当,这里只是提供个例子供大家理解为什么需要transient关键字)。
    readObject反序列化方法恢复序列化之前的状态,方法体内调用生成缩略图方法来恢复缩略图对象。

    相关文章

      网友评论

          本文标题:JAVA-transient 关键字

          本文链接:https://www.haomeiwen.com/subject/ynsvzftx.html