跨网络的瞬态变量携带状态如何?

时间:2013-09-26 20:52:56

标签: java serialization

我们有一台服务器从CLI接收请求,并使用非常基本的POJO来存储在单个对象中传输的状态。这个对象最终通过网络使用OjbectStream服务到我们的服务器,服务器读取它并使用数据来处理请求。它按预期完美地工作。然而,当我今天打开POJO以扩展它时,我注意到它看起来像这样(由于我无法复制和粘贴而由内存编写)

class param {
    private transient String input;
    private transient String output;

    public param(String input, String output){
         this.input=input;
         this.output=output;
    }

   public String getInput(){
         return input;
   }

   public String getOutput(){
        return output;
   }
}

这个POJO如何运作?如果输入和输出字符串,它唯一的变量,都是瞬态的,那么当它被服务器从网络中读出时,我不应该得到一个空的输入和输出字符串,因此无法做任何事情?我知道它有效,我只是想不通它为什么

1 个答案:

答案 0 :(得分:1)

  

这个POJO如何运作?

类似于该类还有writeObjectreadObject方法,可以对这些字段进行序列化和反序列化。

  

如果输入和输出字符串(它具有的唯一变量)都是瞬态的,那么当它被服务器从网络中读出时,我不会得到空的输入和输出字符串,因此无法做任何事吗?

你应该得到null,否则不是空字符串。

  

我知道它有效,但我无法弄清楚它为什么会这样做

很可能有你错过的代码。或者它没有使用Java序列化。其他序列化库可能会忽略transient