标题:Serializable 问题
只看楼主
心动音符
Rank: 1
等 级:禁止访问
威 望:1
帖 子:832
专家分:0
注 册:2005-9-15
 问题点数:0 回复次数:7 
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 
2006-11-25 22:44
心动音符
Rank: 1
等 级:禁止访问
威 望:1
帖 子:832
专家分:0
注 册:2005-9-15
得分:0 
为什么一定要序列化呢 不序列化对象流就不可以用吗

2006-11-25 22:48
心动音符
Rank: 1
等 级:禁止访问
威 望:1
帖 子:832
专家分:0
注 册:2005-9-15
得分:0 
OutputStreamWriter osw=new OutputStreamWriter(new FileOutputStream("a.t") , "GB2312");
FileWriter osw=new FileWriter(new FileOutputStream("a.t"),"GB2312");
我在书上看说这两种方法等效 但写得eclipse里确不能编译

2006-11-25 23:34
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
得分:0 
只有implements Serializable的类才能被序列化

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

可惜不是你,陪我到最后
2006-11-25 23:38
心动音符
Rank: 1
等 级:禁止访问
威 望:1
帖 子:832
专家分:0
注 册:2005-9-15
得分:0 

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编辑过]


2006-11-26 11:39
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
得分:0 

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


可惜不是你,陪我到最后
2006-11-26 11:55
心动音符
Rank: 1
等 级:禁止访问
威 望:1
帖 子:832
专家分:0
注 册:2005-9-15
得分:0 
你能打印????
是自己 输入一行 打出一行的效果吗

2006-11-26 16:15
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
得分:0 

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


可惜不是你,陪我到最后
2006-11-26 16:22



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-105365-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.267108 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved