一道关于java序列化的问题,看大家知多少————
问题先放在这里,稍后我会做出解答
已知类有Test和Test2,问两次主程序的输出结果是多少(SerializeUtil只是序列化的工具类)
类Test
public class Test implements Serializable{
private static final long serialVersionUID = 1L;
private int num;
private transient String str;
public Test(){
this.num = 0xFFFF;
this.str = "string";
}
public Test(int num, String str) {
this.num = num;
this.str = str;
}
@Override
public String toString() {
return num + ","+str;
}
}
类Test2
public class Test2 implements Externalizable,Serializable{
private static final long serialVersionUID = 1L;
private int num;
private transient String str;
public Test2() {
this.num = 0xFFFF;
this.str = "hello";
}
public Test2(int num, String str) {
this.num = num;
this.str = str;
}
@Override
public void writeExternal(ObjectOutput out) throws IOException {
out.write(num);
}
@Override
public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
this.num = in.read();
}
@Override
public String toString() {
return num + ","+str;
}
}
两个主程序:
public static void main(String[] args) {
Test test = new Test();
File file = new File("d:/test.bin");
SerializeUtil.writeObject(file,test);
Test test2 = (Test) SerializeUtil.readObject(file);
System.out.println(test);
System.out.println(test2);
}
public static void main(String[] args) {
Test2 test2 = new Test2();
File file = new File("d:/test2.bin");
SerializeUtil.writeObject(file,test2);
Test2 t = (Test2) SerializeUtil.readObject(file);
System.out.println(test2);
System.out.println(t);
}
附SerializeUtil的代码,可无视——
public class SerializeUtil {
public static void writeObject(File file,Object object){
FileOutputStream fileOutputStream = null;
try {
fileOutputStream = new FileOutputStream(file);
ObjectOutputStream objectOutputStream = new ObjectOutputStream(fileOutputStream);
objectOutputStream.writeObject(object);
objectOutputStream.flush();
}catch (IOException e){
e.printStackTrace();
}finally {
if(fileOutputStream!=null){
try {
fileOutputStream.close();
} catch (IOException e) {}
}
}
}
public static Object readObject(File file){
FileInputStream fileInputStream = null;
try {
fileInputStream = new FileInputStream(file);
ObjectInputStream objectInputStream = new ObjectInputStream(fileInputStream);
return objectInputStream.readObject();
}catch (ClassNotFoundException|IOException e){
e.printStackTrace();
}finally {
if(fileInputStream!=null){
try {
fileInputStream.close();
} catch (IOException e) {}
}
}
return null;
}
}
序列化工具类
答案如下:
/*
第一个主程序:
65535,string
65535,null
第二个主程序:
65535,hello
255,hello
*/
答案
一道关于java序列化的问题,看大家知多少————的更多相关文章
- java序列化,看这篇就够了
一.序列化的含义.意义及使用场景二.序列化实现的方式1.Serializable1.1 普通序列化1.2 成员是引用的序列化1.3 同一对象序列化多次的机制1.4 java序列化算法潜在的问题1.5 ...
- 一文看懂Java序列化
一文看懂Java序列化 简介 Java实现 Serializable 最基本情况 类的成员为引用 同一对象多次序列化 子父类引用序列化 可自定义的可序列化 Externalizable:强制自定义序列 ...
- 一文看懂Java序列化之serialVersionUID
serialVersionUID适用于Java的序列化机制.简单来说,Java的序列化机制是通过判断类的serialVersionUID来验证版本一致性的.在进行反序列化时,JVM会把传来的字节流中的 ...
- Java 序列化Serializable详解
Java 序列化Serializable详解(附详细例子) Java 序列化Serializable详解(附详细例子) 1.什么是序列化和反序列化Serialization(序列化)是一种将对象以一连 ...
- 关于java序列化中的一个细节
java序列化机制的可以参考很多资料了,最近在看的时候发现了一些问题. 1. 默认的序列化机制,很多书里讲到序列化类只序列化类名,实例变量,不会实例化类变量(static)和瞬态变量(transien ...
- Java序列化格式详解
RPC的世界,由于涉及到进程间网络远程通信,不可避免的需要将信息序列化后在网络间传送,序列化有两大流派: 文本和二进制. 文本序列化 序列化的实现有很多方式,在异构系统中最常用的就是定义成人类可读的文 ...
- 简述java序列化
1. 什么是Java对象序列化 Java平台允许我们在内存中创建可复用的Java对象,但一般情况下,只有当JVM处于运行时,这些对象才可能存在,即,这些对象的生命周期不会比JVM的生命周期 ...
- Java序列化的几种方式以及序列化的作用
Java序列化的几种方式以及序列化的作用 本文着重讲解一下Java序列化的相关内容. 如果对Java序列化感兴趣的同学可以研究一下. 一.Java序列化的作用 有的时候我们想要把一个Java对象 ...
- java序列化---转
Java 序列化Serializable详解(附详细例子) 1.什么是序列化和反序列化Serialization(序列化)是一种将对象以一连串的字节描述的过程:反序列化deserialization是 ...
随机推荐
- RabbitMQ简单测试
- C#设计模式-状态者模式
一. 状态者(State)模式 每个对象都有其对应的状态,而每个状态又对应一些相应的行为,如果某个对象有多个状态时,那么就会对应很多的行为.那么对这些状态的判断和根据状态完成的行为,就会导致多重条件语 ...
- 3.Kali 1.0 / 2.0 安装中文输入法(谷歌pinyin + 其他)
1.kali默认是没有中午输入法的,需要自己安装一下 2.首先我们先获取root权限 dnt@HackerKali:~$ su密码: 3.安装中文输入法(apt-get 指令不会的同学可以学习一下基础 ...
- 使用AWS亚马逊云搭建Gmail转发服务(二)
title: 使用AWS亚马逊云搭建Gmail转发服务(二) author:青南 date: 2014-12-31 14:44:27 categories: [Python] tags: [Pytho ...
- 锋利的jQuery--jQuery事件,动画(读书笔记二)
1.注意$(document).ready()方法和window.onload方法之间的细微区别 $(document).ready()在DOM树构建完成就会执行,而window.onload是在DO ...
- 《JS设计模式笔记》构造函数和工厂模式创建对象
工厂模式 function createPerson (name,age,job) { var o=new Object(); o.name=name; o.age=age; o.job=job; o ...
- 《ES6基础教程》之 map、forEach、filter indexOf 用法
1,map,对数组的每个元素进行一定操作,返回一个新的数组. var oldArr = [{first_name:"Colin",last_name:"Toh" ...
- JS作用域面试题总结
关于JS作用域问题,是面试的时候面试官乐此不疲的面试题,有时候确实是令人抓狂,今天看到一个讲解这个问题的视频,明白了那些所谓的“原理”顿时有种豁然开朗的感觉~~~ 1.js作用域(全局变量,局部变量) ...
- niginx代理配置
常用关键词:rewrite.proxy_pass location ^~ /address/ { proxy_set_header Host xx.sohu.com; #设置header proxy_ ...
- nodejs、npm、grunt——名词解释
最近着手开发一个新项目,打算从工程化的角度整理一套自己的前端开发.发布体系. grunt这些工具,之前别人用我也用,并没有认真想过它们的前世今生,正好趁着这个机会,我来理一理目前业界比较流行这些工具的 ...