ホームページ  >  記事  >  Java  >  Javaのtransientキーワードは何をするのでしょうか?

Javaのtransientキーワードは何をするのでしょうか?

王林
王林転載
2019-11-26 10:30:283169ブラウズ

Javaのtransientキーワードは何をするのでしょうか?

関数:

データをシリアル化するときに、属性の 1 つをファイルにシリアル化したくない場合は、一時的な変更を使用する必要があります。属性が一時的な属性であることを示します

関連する Java ビデオ チュートリアル:Java 無料のビデオ チュートリアル

これは学生クラスです:

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
}

シリアル化するとき、学生の住所属性を保存するつもりはありません。名前と年齢属性だけを保存したいのです。一時キーワードを使用して住所属性を変更し、次のようにシリアル化します:

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);
 
    }
}

以下に進み、デシリアライズして、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);
        }
    }

結果:

Javaのtransientキーワードは何をするのでしょうか?

出力結果の address 属性値が次であることがわかります。 null。値はシリアル化されていません;

java 関連記事チュートリアル: java ゼロベースの概要

以上がJavaのtransientキーワードは何をするのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はcsdn.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。