您的位置:首页 > 编程语言 > Java开发

干了这杯Java之transient关键字

2017-10-13 18:06 190 查看
看源码的时候,发现transient这个关键字,不甚理解,查找资料发现:不被序列化

疑问:

静态变量是不是不被序列化?

public class User implements Serializable {

private static final long serialVersionUID = 2877054094045568710L;

private String username;

private transient String password;

private static int age;

public String getUsername() {
return username;
}

public void setUsername(String username) {
this.username = username;
}

public String getPassword() {
return password;
}

public void setPassword(String password) {
this.password = password;
}

public int getAge() {
return age;
}

public void setAge(int age) {
User.age = age;
}

public static void main(String[] args) {
User user = new User();
user.setUsername("imeng");
user.setPassword("123456");
user.setAge(22);

try {
ObjectOutputStream os = new ObjectOutputStream(
new FileOutputStream("/Users/imeng/Desktop/user.txt"));
os.writeObject(user);
os.close();
} catch (IOException e) {
e.printStackTrace();
}

//序列号后改变Static的值
user.setAge(100);

ObjectInputStream oi;
try {
oi = new ObjectInputStream(new FileInputStream("/Users/imeng/Desktop/user.txt"));
User readUser = (User) oi.readObject();
System.out.println("username:" + readUser.getUsername());
System.out.println("transient关键字password:" + readUser.getPassword());
System.out.println("静态变量age:" + readUser.getAge());
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
}

username:imeng
password:null
age:100

结论:

transient关键字可以阻止序列化

序列号并不保存静态变量
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: