日期:2014-05-20  浏览次数:21103 次

java 中序列问题
java中时常遇到序列化的问题,但是自己也没有用过,这里问问大家.
1:在开发中序列化主要用在哪里?
2:能不能举个简单的例子.

先在这里谢谢大家了 !!

------解决方案--------------------
分给我算了...序列化的对象 首先要实现Serializable接口,这个接口是空接口,实现它说明了你的那个类具有了可序列化的能力.(也有书写的是 冰冻 解冻)就是
序列化和反序列化, 这个的作用就是把一个整体的对象存入内存中进行读取...

下面给个列子.希望有用


import java.io.Serializable;

public class User implements Serializable{
String name;
int age;
String password;

public int getAge() {
return age;
}

public String toString(){
return name+age+password;
}

public void setAge(int age) {
this.age = age;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public String getPassword() {
return password;
}

public void setPassword(String password) {
this.password = password;
}

public User(String name, int age, String password) {
this.name = name;
this.age = age;
this.password = password;
}


}




//测试类


import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.OutputStream;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;


public class SerializableTest {

List<User> li = new LinkedList<User>();

public SerializableTest(){

li.add(new User("李四",21,"321"));
li.add(new User("王五",22,"456"));

}

//序列化(冰冻)
public void ObjectOutput(){
try {
OutputStream os = new FileOutputStream("date.dat");
ObjectOutputStream oos = new ObjectOutputStream(os);
oos.writeObject(li);
oos.close();
} catch (FileNotFoundException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
} catch (IOException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
}
//反序列化(解冻)
public void ObjectInput(){
try {
InputStream is = new FileInputStream("date.dat");
ObjectInputStream ois = new ObjectInputStream(is);


List li = (List)ois.readObject();

//List可以用这种遍历元素
// for(int i = 0; i<li.size();i++){
// User u = (User)li.get(i);
// System.out.println(u.getAge()+u.getName()+u.getPassword());
// }

for(Iterator it = li.iterator();it.hasNext();){
User u = (User)it.next();
System.out.println(u.getAge()+u.getName()+u.getPassword());
}

} catch (FileNotFoundException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
} catch (IOException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
}

public static void main(String[] args) {
SerializableTest st = new SerializableTest();
st.ObjectInput();

}

}