序列化有什么作用?
序列化可以将java装换成字节数组,用于对象之间的传输。
如何实现了序列化?
java中有一个Serializable接口,这个接口是在java.io包下,只要实现了这个接口的类,都可以实现序列化。
如何将一个对象序列化?
//1)先建立流通道,这里使用的是ObjectOutputStream ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("d:/下载/obj.txt")); //2)对象序列化,就是把对象保存到文件中,我们的obj.txt中存放的是16进制的字节数据,就相当于是class Student p1 = new Student("lisi", 23); oos.writeObject(p1); //3)关闭流 oos.close();
如何将一个序列化的对象转换成对象?
ObjectInputStream ois = new ObjectInputStream(new FileInputStream("d:/下载/obj.txt")); //读取文件中的对象 //readObject()方法的返回值类型是Object类型,读取文件中的Persn对象之后 , Object类定义的obj变量,实际引用的Person对象 Object obj = ois.readObject(); ois.close(); //直接打印obj,会调用obj引用的Person对象的toString() System.out.println(obj);
为什么一个对象实现Serializable接口之后就可以实现序列化了呢?
我猜测当一个对象事项Serializable接口之后,肯定就会得到一个相应的序列化方法,然后我们的对象调用这个序列化的方法就可以实现序列化了。
但是这怎么可能呢?我们只是实现了Serializable接口,但是我们并没有手动实现Serializable接口的方法啊?
这主要是由于Serializable是一个空接口,它根本没有任何方法,他只是起到了一个标识的作用。
如何使用序列化号起到了什么作用?
可以将序列化后的文件转换成对象,要是没有这个序列化号,会报一个异常:invalidClassExcepliton(无效的类)
造成的原因就是假使没有手动加载序列化号,则类的每次加载都会被虚拟机随即创建一个序列化号。
如何是IDEA自动添加序列化号?