zoukankan      html  css  js  c++  java
  • transient

    “transient”——“瞬态”,先不说这个翻译是否恰当,这个变量关键字一直不曾使用,简单的说就是被瞬态定义的变量不可序列号。或者这么给他换个名字——“不可序列化状态”。
    打个比方,如果一个用户有一些敏感信息(譬如密码,银行卡号等),为了安全起见,不希望在网络操作(主要涉及到序列化操作,本地序列化缓存也适用)中被传输。这些信息对应的变量就可以被定义为transient类型。换句话说,这个字段的生命周期仅存于调用者的内存中。

    如定义类:
        public class People implements Serializable { 
            private static final long serialVersionUID = 8294180014912103005L; 
            /**
             * 用户名
             */ 
            private String username; 
            /**
             * 密码
             */ 
            private transient String password; 
        }

    密码字段为transient,这时候如果对该对象进行序列化,这个密码字段是不会被保存的。

    以下例子展示了这个行为:
        public static void main(String[] args) throws Exception { 
                People p = new People(); 
                p.setUsername("snowolf"); 
                p.setPassword("123456"); 
         
                System.err.println("------操作前------"); 
                System.err.println("username: " + p.getUsername()); 
                System.err.println("password: " + p.getPassword()); 
         
                ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream( 
                        "people.txt")); 
                oos.writeObject(p); 
                oos.flush(); 
                oos.close(); 
         
                ObjectInputStream ois = new ObjectInputStream(new FileInputStream( 
                        "people.txt")); 
                p = (People) ois.readObject(); 
         
                ois.close(); 
         
                System.err.println("------操作后------"); 
                System.err.println("username: " + p.getUsername()); 
                System.err.println("password: " + p.getPassword()); 
            }
    执行结果是:
        ------操作前------  
        username: snowolf  
        password: 123456  
        ------操作后------  
        username: snowolf  
        password: null

  • 相关阅读:
    基于ROS-Unity的移动机器人虚实交互场景构建方法的研究
    ROS连接ABB机械臂调试详细教程-ROS(indigo)和ABB RobotStudio 6.03.02-
    ROS#资讯汇总(ROS、C#、.NET和Unity3D)
    论文阅读:A review and comparison of ontology-based approaches to robot autonomy ALBERTO
    商业RDF三元组数据库AllegroGraph
    Qt编写的项目作品30-录音播放控件(雨田哥作品)
    Qt编写的项目作品29-RTSP播放器+视频监控(海康SDK版本)
    Qt编写的项目作品28-RTSP播放器+视频监控(mpv版本)
    Qt音视频开发23-通用视频控件
    Qt音视频开发22-通用GPU显示
  • 原文地址:https://www.cnblogs.com/-ROCKS/p/5859134.html
Copyright © 2011-2022 走看看