Рубрики
Без рубрики

Java – Что такое переходные поля?

– Java – Что такое переходные поля?

В Java переходные поля исключаются в процессе сериализации. Короче говоря, когда мы сохраняем объект в файл (сериализация), все переходные поля игнорируются.

1. POJO + переходный

Просмотрите следующий Человек класс; поле “Зарплата” является временным .

public class Person implements Serializable {

    private static final long serialVersionUID = 1L;

    private String name;
    private int age;

    // ignore this field
    private transient BigDecimal salary;

    //...
}

2. Сериализация

2.1 Во время сериализации временное поле зарплата будет исключено.

package com.mkyong.io.object;

import java.io.*;
import java.math.BigDecimal;

public class ObjectUtils {

    public static void main(String[] args) throws IOException, ClassNotFoundException {

        Person person = new Person("mkyong", 40, new BigDecimal(900));

        // object -> file
        try (FileOutputStream fos = new FileOutputStream("person.obj");
             ObjectOutputStream oos = new ObjectOutputStream(fos)) {
            oos.writeObject(person);
            oos.flush();
        }

        Person result = null;
        // file -> object
        try (FileInputStream fis = new FileInputStream("person.obj");
             ObjectInputStream ois = new ObjectInputStream(fis)) {
            result = (Person) ois.readObject();
        }

        System.out.println(result);

    }

}

Выход

Person{name='mkyong', age=40, salary=null}

2.2 Теперь мы удалили ключевое слово transient .

public class Person implements Serializable {

    private static final long serialVersionUID = 1L;

    private String name;
    private int age;
    private BigDecimal salary;

    //...
}

Повторите его, на этот раз отобразится поле зарплата.

Person{name='mkyong', age=40, salary=900}  

Сделано.

Скачать Исходный Код

$клон git https://github.com/mkyong/core-java.git

$cd java-ввод-вывод

Рекомендации

Оригинал: “https://mkyong.com/java/java-what-is-transient-fields/”