如何使用`transient`成员?

时间:2013-05-09 11:25:53

标签: java serialization

我有Serialized个班级,其成员有transient个成员。我不确定如何使用这些成员。

public class ClientBeanBase extends BeanBase 
{

  protected REWSStubClient getServiceStub( boolean initSession ) 
  {     
    REWSStubClient stub = null;

    stub = (REWSStubClient) sessionVars.get(Constants.SESSION_KEY_STUB)             

    ...
}

我的基类是:

public class BeanBase implements Serializable
{
  protected transient Map<String,Object> sessionVars = ...;
  ...
}

我在sessionVars中看到null有时为getServiceStub 我很困惑何时可以在sessionVars中使用ClientBeanBase

3 个答案:

答案 0 :(得分:1)

您可以随时使用sessionVars

transient关键字唯一能做的就是告诉JVM在对象序列化的情况下不要序列化该特定字段。换句话说,重新创建对象时,它将重置为默认值。

答案 1 :(得分:0)

您可能已经知道序列化中会跳过瞬态变量。你可以随时引用它,但是你需要在使用之前初始化sessionVars,你可以在构造函数中设置它。

答案 2 :(得分:0)

如果你在本地访问实例,我的意思是在没有rmi的相同jvm下,瞬态变量将显示该值。但是如果您正在编组实例,那么您将看到这些变量的空值。