当前位置: 移动技术网 > IT编程>开发语言>Java > Java transient关键字原理解析

Java transient关键字原理解析

2020年03月09日  | 移动技术网IT编程  | 我要评论

这篇文章主要介绍了java transient关键字原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

java 中的 transient 关键字被用来表示变量将不被序列化处理。那么在理解 transient 关键字之前,我们先了解下什么是序列化。

什么是序列化

序列化是对象进行持久化处理,也就是说,将对象转化成一个字节流进行存储(比如存储为一个字节文件)或传输(通过网络传输字节)。同时,我们也可以从字节中反序列化一个对象出来。这是java程序中一个重要的概念,因为网络应用中通常需要将对象序列化成字节传输。每一个需要序列化的对象,都要实现 serializable 接口。

transient关键字

默认情况下,对象所有的变量都会转变成持久状态。但是有时候,一些变量可能不需要序列化,因为没必要对这些变量进行序列化。这时,你就可以将这些变量申明为 transient。如果一个变量被申明为 transient,那么这个变量就不会被序列化。

通过下面这个例子应该能够解释 transient 关键字的作用:

public class namestore implements serializable {
  private string firstname;
  private transient string middlename;
  private string lastname;

  public namestore (string fname, string mname, string lname){
    this.firstname = fname;
    this.middlename = mname;
    this.lastname = lname;
  }

  @override
  public string tostring() {
    return "namestore{" +
        "firstname='" + firstname + '\'' +
        ", middlename='" + middlename + '\'' +
        ", lastname='" + lastname + '\'' +
        '}';
  }
}

public class transientexample {
  public static void main(string[] args) throws exception {
    namestore namestore = new namestore("steve", "middle","jobs");
    objectoutputstream o = new objectoutputstream(new fileoutputstream("namestore"));
    // writing to object
    o.writeobject(namestore);
    o.close();

    // reading from object
    objectinputstream in = new objectinputstream(new fileinputstream("namestore"));
    namestore namestore1 = (namestore)in.readobject();
    system.out.println(namestore1);
  }
}

上面例子的输出:

namestore{firstname='steve', middlename='null', lastname='jobs'}

middlename 变量被申明为 transient,因此没有被序列化.

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持移动技术网。

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网