transient 关键字

transient关键字声明的成员变量,在序列化时会被忽略。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
public abstract class Main {
public static void main(String[] args) {
User user = new User("name", "pwd");
try (ObjectOutputStream oop = new ObjectOutputStream(new FileOutputStream("user.txt"))) {
oop.writeObject(user);
} catch (IOException e) {
e.printStackTrace();
}
User readUser = null;
try (ObjectInputStream ois = new ObjectInputStream(new FileInputStream("user.txt"))) {
readUser = (User) ois.readObject();
} catch (IOException | ClassNotFoundException e) {
e.printStackTrace();
}
if (readUser != null) {
System.out.println(readUser);
}
}

}

class User implements Serializable {
String name;
transient String pwd;

public User(String name, String pwd) {
this.name = name;
this.pwd = pwd;
}
@Override
public String toString() {
return "User{" +
"name='" + name + '\'' +
", pwd='" + pwd + '\'' +
'}';
}
}

输出:

1
User{name='name', pwd='null'}


Java      序列化

本博客所有文章除特别声明外,均采用 CC BY-SA 3.0协议 。转载请注明出处!