首页 > 代码库 > transient关键字的作用
transient关键字的作用
代码如下:
import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.Serializable; public class MyTest implements Serializable{ private static final long serialVersionUID = 1L; private String name="SheepMu"; private transient int age=24; private Book book=new Book("我是一本书"); public static void main(String[] args) { try { ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("my.out"));//输出流保存的文件名为 my.out ;ObjectOutputStream能把Object输出成Byte流 MyTest myTest=new MyTest(); oos.writeObject(myTest); oos.flush(); //缓冲流 oos.close(); //关闭流 } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } System.out.println("success"); fan(); } public static void fan()//反序列的过程 { ObjectInputStream oin = null;//局部变量必须要初始化 try { oin = new ObjectInputStream(new FileInputStream("my.out")); } catch (FileNotFoundException e1) { e1.printStackTrace(); } catch (IOException e1) { e1.printStackTrace(); } MyTest mts = null; try { mts = (MyTest ) oin.readObject();//由Object对象向下转型为MyTest对象 } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } System.out.println("name="+mts.name); System.out.println("age="+mts.age); System.out.println("书"+mts.book.getBookname()); } }
意思就是:
book类省略;
如果不用transient 关键字 修饰的话,每一个 测试类中的属性都会初始化,在返序列化中可以拿到值
(如果在成员变量中出现自身定义的类型,则该类型必须实现serilizable接口)
如果用transient 修饰的话,则拿到的值为空甚至出现空指针
transient关键字的作用
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。