当前位置: 代码迷 >> Java相关 >> Serializable 问题
  详细解决方案

Serializable 问题

热度:667   发布时间:2006-11-25 22:44:38.0
Serializable 问题

package v1.v1ch12.ObjectFileTest;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.util.Date;
import java.util.GregorianCalendar;

class ObjectFileTest
{
public static void main(String[] args)
{
Manager boss = new Manager("Carl Cracker", 80000, 1987, 12, 15);
boss.setBonus(5000);

Employee[] staff = new Employee[3];

staff[0] = boss;
staff[1] = new Employee("Harry Hacker", 50000, 1989, 10, 1);
staff[2] = new Employee("Tony Tester", 40000, 1990, 3, 15);

try
{

ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("employee.dat"));
out.writeObject(staff);
out.close();


ObjectInputStream in = new ObjectInputStream(new FileInputStream("employee.dat"));
Employee[] newStaff = (Employee[]) in.readObject();
in.close();


for (int i=0;i<staff.length;i++)
System.out.println(staff[i]); //这里是不是每个System,out,println()中都隐含的有一个toString()方法啊?
}
catch (Exception e)
{
e.printStackTrace();
}
}
}

class Employee implements Serializable //这个序列话的效果是什么啊 为什么去了就会报异常的 它在这个类里好像没做什么事啊! 具体是怎么一会事啊 我看了半天 百思不得其解啊
{
public Employee() {}

public Employee(String n, double s, int year, int month, int day)
{
name = n;
salary = s;
GregorianCalendar calendar = new GregorianCalendar(year, month - 1, day);
hireDay = calendar.getTime();
}

public String getName()
{
return name;
}

public double getSalary()
{
return salary;
}

public Date getHireDay()
{
return hireDay;
}

public void raiseSalary(double byPercent)
{
double raise = salary * byPercent / 100;
salary += raise;
}

public String toString()
{
return getClass().getName()
+ "[name=" + name
+ ",salary=" + salary
+ ",hireDay=" + hireDay
+ "]";
}

private String name;
private double salary;
private Date hireDay;
}

class Manager extends Employee
{
public Manager(String n, double s, int year, int month, int day)
{
super(n, s, year, month, day);
bonus = 0;
}

public double getSalary()
{
double baseSalary = super.getSalary();
return baseSalary + bonus;
}

public void setBonus(double b)
{
bonus = b;
}

public String toString()
{
return super.toString()
+ "[bonus=" + bonus
+ "]";
}

private double bonus;
}

搜索更多相关的解决方案: import  java  Serializable  util  Manager  

----------------解决方案--------------------------------------------------------
为什么一定要序列化呢 不序列化对象流就不可以用吗
----------------解决方案--------------------------------------------------------
OutputStreamWriter osw=new OutputStreamWriter(new FileOutputStream("a.t") , "GB2312");
FileWriter osw=new FileWriter(new FileOutputStream("a.t"),"GB2312");
我在书上看说这两种方法等效 但写得eclipse里确不能编译
----------------解决方案--------------------------------------------------------
只有implements Serializable的类才能被序列化

它只是一个标志接口,并没有具体的方法

----------------解决方案--------------------------------------------------------

InputStreamReader in=new InputStreamReader(System.in);//这个是不是将输入得内容转换成字符
BufferedReader br=new BufferedReader(in);
String ss=null;
while((ss=br.readLine())!=null)
System.out.print(ss);
控制台为什么打印不出我输入得内容呢


[此贴子已经被作者于2006-11-26 11:40:36编辑过]


----------------解决方案--------------------------------------------------------

谁说不会打印,我这里就会打印


----------------解决方案--------------------------------------------------------
你能打印????
是自己 输入一行 打出一行的效果吗

----------------解决方案--------------------------------------------------------

你为什么不能打一行,是因为你用的是print,用println就可以打印后回车了


----------------解决方案--------------------------------------------------------
  相关解决方案