transient

transient ใช้ระบุว่าแอททริบิวท์นี้ไม่ต้อง serialize

คลาส A มีแอททริบิวท์ 3 ตัว แต่มีอยู่หนึ่งตัวเป็น transient เวลาเขียนลงไฟล์ จะไม่เขียนแอททริบิวท์นี้ลงไป

import java.io.*;

class A implements Serializable{
    int n;
    String s;
    transient int m;
}

public class Test {
    public static void main(String[] args) 
                                     throws Exception {
        A a = new A();
        a.n = 10;
        a.s = "hello";
        a.m = 20;
        FileOutputStream fos;
        fos = new FileOutputStream("c:\\a.bin");
        ObjectOutputStream oos;
        oos = new ObjectOutputStream(fos);
        oos.writeObject(a);
        oos.close();
    }
}

ดังนั้นเมื่ออ่านค่าวัตถุนี้จากไฟล์ แอททริบิวท์ m จึงไม่ถูกกำหนดค่า เพราะเป็น transient

import java.io.*;

class A implements Serializable{
    int n;
    String s;
    transient int m;
}

public class Test {
    public static void main(String[] args) 
                                throws Exception {
        FileInputStream fis;
        fis = new FileInputStream("c:\\a.bin");
        ObjectInputStream ois;
        ois = new ObjectInputStream(fis);
        A a = (A) ois.readObject();
        System.out.println(a.n);
        System.out.println(a.s);
        System.out.println(a.m);
    }
}

เอาท์พุทคือ

10
hello
0

โฆษณาหนังสือ เขียนโปรแกรม Java เบื้องต้น

หนังสือ Java Keywords

หากจะนำข้อความไปใช้ ต้องแสดงที่มา และห้ามใช้ในเชิงพาณิชย์

One thought on “transient

Leave a Reply

Please log in using one of these methods to post your comment:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s