首页 > 编程语言 >java transient关键字

java transient关键字

时间:2023-02-13 14:12:21浏览次数:39  
标签:java name age 关键字 transient public 变量

1、含义

transient 是短暂的意思。用transient关键字修饰的成员变量,在类的实例对象的序列化处理过程中会被忽略,生命对象仅存在于调用者的内存中而不会被写到硬盘里。

 

示例:

package test1;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;

/**
 * @description:
 * @author: luguilin
 * @date: 2023-02-13 13:49
 **/
public class TestTransient {
    public static void main(String[] args)
            throws IOException, ClassNotFoundException {
        User user = new User("lisi", 14);
        System.out.println(user);
        ObjectOutputStream os = new ObjectOutputStream(
                new FileOutputStream("user.txt"));
        os.writeObject(user);
        os.flush();os.close();

        ObjectInputStream is = new ObjectInputStream(
                new FileInputStream("user.txt"));
        User u =  (User)is.readObject();
        is.close();
        System.out.println(u);

    }
}


class User implements Serializable {
    private final long serialVersionUID = 1L;
    private String name;
    private transient Integer age;

    public User(String name, Integer age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "User{" +
                "serialVersionUID=" + serialVersionUID +
                ", name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

 

使用总结:

(1)一旦变量被transient修饰,变量将不再是对象持久化的一部分,该变量内容在序列化后无法被访问。 (2)transient关键字只能修饰变量,而不能修饰方法和类。注意,本地变量是不能被transient关键字修饰的。变量如果是用户自定义类变量,则该类需要实现Serializable接口。 (3)一个静态变量不管是否被transient修饰,均不能被序列化(如果反序列化后类中static变量还有值,则值为当前JVM中对应static变量的值)。序列化保存的是对象状态,静态变量保存的是类状态,因此序列化并不保存静态变量。

标签:java,name,age,关键字,transient,public,变量
From: https://www.cnblogs.com/r1-12king/p/17116138.html

相关文章

  • 提高代码质量的 11 个高级 JavaScript 函数
    通过使用包括Debounce、Once和Memoize的函数,以及Pipe、Pick和Zip,来提高代码质量!介绍JavaScript是一种强大而多功能的编程语言,具有许多内置特性,可以帮助您编写......
  • java计算指定日期的上个月
    文章目录​​java计算指定日期的上个月​​​​Calendar类​​​​API​​​​代码实现​​java计算指定日期的上个月Calendar类    Calendar类是一个抽象类,可以为在某......
  • java中Date日期类型的大小比较
    文章目录​​方法一:CompareTo()​​​​方法二:getTime()​​方法一:CompareTo()调用CompareTo(DateanotherDate)方法,API如下:publicintcompareTo(DateanotherDate)参......
  • java中BigDecimal类型比较大小和绝对值计算
    文章目录​​前言​​​​关键方法:​​​​代码测试:​​​​将equals()方法和compareTo()作比较​​前言涉及到BigDecimal类型的比较,最好使用​​compareTo()​​​方法,不......
  • java 有序数组中出现次数超过25%的元素
    有序数组中出现次数超过25%的元素说明给你一个非递减的有序整数数组,已知这个数组中恰好有一个整数,它的出现次数超过数组元素总数的25%。代码for(inti=0,len=......
  • 2023-02-13 【Android studio内存不足】 Out of memory: Java heap space. Configure
    我的as版本:4.2.2测试环境:Android要修改as内存,需要修改两个地方:1、打开as,找到帮助==>更改内存设置==>最大堆大小,把2048修改成你想要的值,我是改成了8192,就是8g内存,接着重......
  • 剑指 Offer 32 - II. 从上到下打印二叉树 II(java解题)
    目录1.题目2.解题思路3.数据类型功能函数总结4.java代码5.踩坑记录1.题目从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行。例如:给定......
  • Java基础day6复习-Debug的学习
    1.Debug模式1.1什么是Debug模式是供程序员使用的程序调试工具,它可以用于查看程序的执行流程,也可以用于追踪程序执行过程来调试程序。1.2Debug模式操作流程如何加断点......
  • Arrays.asList报错:java.lang.UnsupportedOperationException
    问题描述以下代码中,给List对象添加元素的时候,会报错packagecom.example;importjava.util.Arrays;importjava.util.List;publicclassDemo{publicstaticvoidmain......
  • Java:SpringBoot整合Sharding-Jdbc实现数据库读写分离
    读写分离实现效果:写操作使用master主库,读操作使用slave从库依赖<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId>......