Javaでtransientはどのような役割を果たしますか?


Transientキーワードは、ドメインのシーケンス化を防止するために使用されます.参照タイプがtransientによって修飾されている場合、その逆シーケンス化の結果はnullです.基本タイプは0です.タイプを参照するときにシーケンス化できないクラスの場合は、逆シーケンス化時に直接スキップされるtransient修飾も使用します.
保存したくないドメインをtransientで修飾できます
次の例ではtransientで修飾されたnameを見ることができ,シーケンス化クローンを用いた後,逆シーケンス化の結果nullである.
package com.lk.B;



import java.io.ByteArrayInputStream;

import java.io.ByteArrayOutputStream;

import java.io.IOException;

import java.io.ObjectInputStream;

import java.io.ObjectOutputStream;

import java.io.Serializable;



public class Employee implements Cloneable,Serializable{

	private static final long serialVersionUID = 1L;

	private transient String name;

	private int age;

	public Employee(String name,int age){

		this.name = name;

		this.age = age;

	}

	public String getName() {

		return name;

	}

	public void setName(String name) {

		this.name = name;

	}

	public int getAge() {

		return age;

	}

	public void setAge(int age) {

		this.age = age;

	}

	@Override

	public String toString() {

		// TODO Auto-generated method stub

		StringBuffer sb = new StringBuffer();

		sb.append("  :"+name+",");

		sb.append("  :"+age+"
"); return sb.toString(); } @Override protected Employee clone() { // TODO Auto-generated method stub Employee employss = null; ByteArrayOutputStream baos = new ByteArrayOutputStream(); try { ObjectOutputStream oos = new ObjectOutputStream(baos); oos.writeObject(this); oos.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray()); try { ObjectInputStream ois = new ObjectInputStream(bais); employss = (Employee) ois.readObject(); ois.close(); } catch (IOException | ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } return employss; } }
  
package com.lk.B;





public class Test3 {

    public static void main(String[] args) {

        Employee emp = new Employee("  ", 21);

        System.out.println(emp);

        Employee emp1 = emp.clone();

        System.out.println(emp1);

    }

}
  :  ,  :21



  :null,  :21