• 干了这杯Java之transient关键字


    看源码的时候,发现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关键字可以阻止序列化
    • 序列号并不保存静态变量
  • 相关阅读:
    学习进度第七周
    NABCD---生活日历
    学习进度第六周
    人月神话阅读笔记(3)
    人月神话阅读笔记(2)
    人月神话阅读笔记(1)
    石家庄地铁查询(双人项目)
    学习进度第五周
    学习进度第四周
    返回一个整数数组中最大子数组的和。(续2)---二维数组
  • 原文地址:https://www.cnblogs.com/imeng/p/7662449.html
Copyright © 2020-2023  润新知