java transient关键字

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变量的值)。序列化保存的是对象状态,静态变量保存的是类状态,因此序列化并不保存静态变量
posted @ 2023-02-13 14:02  r1-12king  阅读(22)  评论(0编辑  收藏  举报