1

我们有一个服务器从 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 是如何工作的?如果输入和输出字符串(它拥有的唯一变量)都是瞬态的,那么当服务器从网络读取它时,我不应该得到一个空的输入和输出字符串,因此无法做任何事情吗?我知道它有效,但我无法弄清楚它为什么有效

4

1 回答 1

1

这个 POJO 是如何工作的?

最喜欢的类也有一个writeObjectreadObject方法来序列化和反序列化这些字段。

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

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

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

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

于 2013-09-26T20:56:18.303 回答