Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Java программирование > Общие вопросы по Java, Java SE, Kotlin
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.11.2011, 00:20   #1
3dg_fan
Пользователь
 
Аватар для 3dg_fan
 
Регистрация: 25.12.2010
Сообщений: 38
По умолчанию Сериализация вектора

Здравствуйте, помогите, пожалуйста, разобраться..
мне нужно написать методы для сериализации и десериализации вектора, который хранит объекты, в текстовый файл и из файла,я пыталась написать так:
Код:
public void writeEmployee(String fileName) throws IOException {
	
	 try {
		fos = new FileOutputStream(fileName);
			oos = new ObjectOutputStream(fos);
				oos.writeObject(employeeVector);
				oos.flush();
			
	} catch (IOException e) {
		e.printStackTrace();
	}
	finally{
		
		oos.close();
	}


public void readEmployee(String fileName) throws IOException, ClassNotFoundException {
	try {
		fis = new FileInputStream(fileName); 
		oin = new ObjectInputStream(fis);
			
			Vector<Employee> emp =   (Vector<Employee>) oin.readObject();
			System.out.println(emp);
			
	} catch (FileNotFoundException e1) {
		e1.printStackTrace();
	}
Вектор employeeVector, хранит employee, у которых есть имя, д.р, з\п и тп)
Хотя сериализация происходит, потому что в файле появляется зашифрованый код, но при десиреализиции вывод такой:

Код:
First name: null
Last name: null
Date of birth: null
хотя в тест классе я добавила инфу для employee
Код:
Admin admin = new Admin();
		
		Employee manager = new Manager();
		manager.setFirstName("Steve");
		manager.setLastName("Lambert");
		manager.setDateBirth("19/12/1984");
		admin.hireEmployee(manager);
		//hireEmployee метод просто добавляет Employee в вектор employeeVector
		
		admin.writeEmployee("EmployeeList.txt");
		admin.readEmployee("EmployeeList.txt");
Буду благодарна за любую помощь)
3dg_fan вне форума Ответить с цитированием
Старый 26.11.2011, 09:31   #2
it-webwork
Пользователь
 
Регистрация: 02.11.2011
Сообщений: 29
По умолчанию

В самих методах ошибки я не вижу. А вот как обстоит дела с классами?
А интересует именно класс Employee.
1: Наследует ли класс интерфейс Serializable?
Код:
class Employee  implements Serializable{

}
2: Не объявлены ли поля с модификатором transient? Этот модификатор указывает отключение сериализации для данного поля.
it-webwork вне форума Ответить с цитированием
Старый 26.11.2011, 16:26   #3
3dg_fan
Пользователь
 
Аватар для 3dg_fan
 
Регистрация: 25.12.2010
Сообщений: 38
По умолчанию

Код:
public abstract class Employee extends Person implements Serializable
{

private int salary;
private String insuranceNumber;
private String hireDate;
private double bonus;

private static String ID;
private String email;
private String phoneNo;

public Employee() {
	super();
}

public String getHireDate() {
    return hireDate;
}
/**
 * @param hireDate 
*/
public void setHireDate(String hireDate) {
	this.hireDate = hireDate;
}
/**
 * @return 
*/
public double getBonus() {
    return bonus;
}
/**
 * @return 
*/
public String getInsuranceNumber() {
    return insuranceNumber;
}
/**
 * @param insuranceNumber 
*/
public void setInsuranceNumber(String insuranceNumber) {
	this.insuranceNumber = insuranceNumber;
}
/**
 * @return 
*/
public double getSalary() {
    return salary;
}
/**
 * @return 
*/
public String getEmail() {
    return email;
}
/**
 * @param email 
*/
public void setEmail(String email) {
	this.email = email;
}
/**
 * @return 
*/
public String getPhoneNo() {
    return phoneNo;
}
/**
 * @param phoneNo 
*/
public void setPhoneNo(String phoneNo) {
	this.phoneNo = phoneNo;
}
public int compareTo(Employee e) {
	// TODO Auto-generated method stub
	if(salary > e.salary)
		return 1;
	if(salary < e.salary)
		return -1;

	return 0;
}
public String toString()
{
	return super.toString() + "\nID: "+ID+"\nHire date: " + hireDate + "\nInsurance Number: "+ insuranceNumber + "\nPhone number: " + phoneNo
	+ "\nEmail: "+ email+ "\nSalary: "+salary+"\nBonus: "+ bonus ;
	}

}
Код:


public class Admin extends Employee {

public Vector<Employee> employeeVector;
public Vector<Student> studentsVector;

private static double fees;
private static int credits;
private static String studentID;
FileOutputStream fos;
ObjectOutputStream oos;
FileInputStream fis;
ObjectInputStream oin;
ByteArrayOutputStream b;

public Admin() {
	super();
	employeeVector = new Vector<Employee>();
	studentsVector = new Vector<Student>();
}

public double getSalary()
{
	return getSalary();
}
public void hireEmployee(Employee e) throws IOException {
	
	employeeVector.add(e);	
}

public void dismissEmployee(Employee e) {
	employeeVector.remove(e);
}
/**
 * @param out 
 * @throws IOException 
*/
public void writeEmployee(String fileName) throws IOException {
	
	 try {
		fos = new FileOutputStream(fileName);
			oos = new ObjectOutputStream(fos);
				oos.writeObject(employeeVector);
				oos.flush();
			
	} catch (IOException e) {
		e.printStackTrace();
	}
	finally{
		
		oos.close();
	}
}
/**
 * @param in 
 * @throws IOException 
 * @throws ClassNotFoundException 
*/
public void readEmployee(String fileName) throws IOException, ClassNotFoundException {
	try {
		fis = new FileInputStream(fileName); 
		oin = new ObjectInputStream(fis);
			
			Vector<Employee> emp =   (Vector<Employee>) oin.readObject();
			System.out.println(emp);
			
	} catch (FileNotFoundException e1) {
		e1.printStackTrace();
	}	
}
/**
 * @param s 
*/
public void registerNewStudent(Student s) {
	studentsVector.add(s);
}
public void setID(Student s, String id)
{
	this.studentID = id;
}
public static String getID()
{
	return studentID;
}
/**
 * @param s 
*/
public void expelStudent(Student s) {
	studentsVector.remove(s);
}
public void writeStudent(String fileName2) throws IOException {
	
	 try {
		fos = new FileOutputStream(fileName2);
			oos = new ObjectOutputStream(fos);
			
			oos.writeObject(studentsVector);
			oos.flush();
			
	} catch (IOException e) {
		e.printStackTrace();
	}
	finally{
		oos.close();
	}
}
/**
 * @param in 
 * @throws IOException 
 * @throws ClassNotFoundException 
*/
public void readStudent(String fileName2) throws IOException, ClassNotFoundException {
 try {
	fis = new FileInputStream(fileName2);
} catch (FileNotFoundException e) {
	e.printStackTrace();
}
 oin = new ObjectInputStream(fis);
 Vector<Student> stud =   (Vector<Student>) oin.readObject();
	System.out.println(stud);
	
}
public int compareTo(Admin a) {
	if(getSalary() > a.getSalary())
		return 1;
	if(getSalary() < a.getSalary())
		return -1;

	return 0;

}
	public void setFeesForCourse(Course c, double amount)
	{
		this.fees = amount;
	}
	public static double getFees()
	{
		return fees;
	}
	public void setCreditsForCourse(Course c, int credits)
	{
		this.credits = credits;
	}
	public static int getCredits()
	{
		return credits;
	}
}

Скажите, пожалуйста, в чем ошибка?
3dg_fan вне форума Ответить с цитированием
Старый 26.11.2011, 17:06   #4
[CODER]
Форумчанин
 
Аватар для [CODER]
 
Регистрация: 02.02.2010
Сообщений: 305
По умолчанию

Я не нашел метод main(String[] args) и не понимаю что за клас Person...
если не сложно - выложите весь проект, я постараюсь помочь.
Skype: CODERua
[CODER] вне форума Ответить с цитированием
Старый 26.11.2011, 17:54   #5
3dg_fan
Пользователь
 
Аватар для 3dg_fan
 
Регистрация: 25.12.2010
Сообщений: 38
По умолчанию

гениально! Спасибо огромное , что напомнили про класс Person, потеряла из виду, имплементила все его подклассы интерфейсом Serializable, а сам класс забыла) весь проект не могла выложить, там кууча классов
всем спасибо, тему можно закрыть)
3dg_fan вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сериализация Gregor Компоненты Delphi 10 16.04.2011 12:18
Сериализация Вов@ныч Общие вопросы Delphi 2 06.07.2009 09:54
xml сериализация ???? Maladoj Общие вопросы .NET 2 28.03.2009 12:06
сериализация Crucian Общие вопросы C/C++ 5 18.11.2007 16:37