JAVA-transient 关键字

为什么要有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反序列化方法恢复序列化之前的状态,方法体内调用生成缩略图方法来恢复缩略图对象。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容