Home >Java >Javagetting Started >What does the transient keyword in java do?

What does the transient keyword in java do?

王林
王林forward
2019-11-26 10:30:283274browse

What does the transient keyword in java do?

Function:

When serializing data, if you don’t want to serialize one of the attributes into a file, you need to use transient Modification, indicating that the attribute is a temporary attribute

Related java video tutorial:java free video tutorial

This is a student class:

public class Student implements Serializable {//注意:要想序列化,必须实现Serializable接口
 
    private String name;
    private Integer age;
    private transient String address;  //使用transient修饰
 
    public Student() {
    }
 
    public Student(String name, Integer age, String address) {
        this.name = name;
        this.age = age;
        this.address = address;
    }
    //Getter/Setter
}

When I serialize, I don’t plan to save the student’s address attribute. I only want to save the name and age attributes. I modify the adress attribute with the transient keyword and serialize it as follows:

public class TestStudent {
 
    public static void main(String[] args) throws IOException {
 
        List<Student> list = new ArrayList<>();
        Student s1 = new Student("Jack", 20, "北京");
        Student s2 = new Student("Rose", 21, "上海");
        Student s3 = new Student("Hoke", 22, "深圳");
        Student s4 = new Student("Mark", 23, "天津");
        Student s5 = new Student("Json", 24, "成都");
 
        list.add(s1);
        list.add(s2);
        list.add(s3);
        list.add(s4);
        list.add(s5);
 
        //将学生信息序列化到student.txt文件中
        File file = new File("student.txt");
        ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(file));
        oos.writeObject(list);
 
    }
}

Proceed below Deserialize and verify the role of transient:

@Test
    public void test() throws IOException, ClassNotFoundException {
 
        ObjectInputStream ois = new ObjectInputStream(new FileInputStream(new File("student.txt")));
 
        Object object = ois.readObject();
        if (object instanceof List) {
            List<Student> list = (List<Student>) object;
            list.forEach(System.out::println);
        }
    }

Result:

What does the transient keyword in java do?

You can see that the address attribute value in the output result is null. The value is not serialized;

java related article tutorial: java zero-based introduction

The above is the detailed content of What does the transient keyword in java do?. For more information, please follow other related articles on the PHP Chinese website!

Statement:
This article is reproduced at:csdn.net. If there is any infringement, please contact admin@php.cn delete