Problem w zadaniu z tematem serializacji

0

Cześć
Jestem samoukiem języka Javy i obecnie skupiam się na temacie serializacji.
Dla większości z Was mój problem może wydać się banalny ale mi sprawia spore problemy.

Piszę aplikację, która będzie pozwalała wczytać informację o pracownikach firmy pobierając je od użytkownika.
Stworzyłem klasy person, employee, klasę company, która przechowuje tablicę pracowników z informacjami.
Problem dotyczy klasy companyApp, która pozwala wczytać dane od użytkownika i zapisać je na dysku, lub odczytać dane z dysku i wyświetlić je na ekranie.
Jak to zrobić?? Prosiłbym o wskazówki.
Podsyłam klasy, które stworzyłem.


import java.io.Serializable;

public class Person implements Serializable {


    private String name;
    private String surname;

    public Person(String name, String surname) {
        this.name = name;
        this.surname = surname;
    }

    public String getName() {
        return name;
    }

    public String getSurname() {
        return surname;
    }

    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", surname='" + surname + '\'' +
                '}';
    }
}


public class Employee extends Person{

    private int salary;


    public Employee(String name, String surname, int salary) {
        super(name, surname);
        this.salary = salary;
    }

    @Override
    public String toString() {
        return "Employee{" +
                "salary=" + salary +
                '}';
    }
}



public class Company {


    public static void main(String[] args) {



        Employee[] employee = new Employee[3];
        employee[0] = new Employee("Jan", "Nowak", 8000);
        employee[1] = new Employee("Karol", "Baranowski", 250000);
        employee[2] = new Employee("Filip", "Majak", 35000);
    }
}

2

Z czym konkretnie masz problem?
Na pewno mogę powiedzieć że powinienes miec serialversionUID, wiesz dlaczego?

0

Panowie możecie rzucić okiem na kod i wskazać co tutaj nie gra??
Błądźę mocno ale staram się coś wnieść w rozwiązanie tego zadania

public class CompanyApp {
    public static void main(String[] args) throws IOException, ClassNotFoundException {
        Employee[] employee = new Employee[3];

        File f = new File("MyFile.txt");
        FileOutputStream fos = new FileOutputStream(f);
        ObjectOutputStream oos = new ObjectOutputStream(fos);
        oos.writeObject(employee);
        oos.close();

        FileInputStream fis = new FileInputStream(f);
        ObjectInputStream ois = new ObjectInputStream(fis);
        Counter newCounter = (Counter) ois.readObject();
        System.out.println(newCounter.count);
        ois.close();
    }
}

class Counter implements Serializable {
    private static final long serialVersionUID = -628789568975888036L;
    int count;

    Counter(int count) {
        this.count = count;
    }
}
0

A co się dzieje? Nie zapisuje do pliku? Czemu nie korzystarz z try-with-resources?

0
Alan99 napisał(a):

Panowie możecie rzucić okiem na kod i wskazać co tutaj nie gra??

Błądźę mocno ale staram się coś wnieść w rozwiązanie tego zadania

Trochę fundamerntów brakuje


        Employee[] employee = new Employee[3];

        oos.writeObject(employee);

Czego się po tym spodziewasz?

0

Wstawiam poprawiony kod. Prosiłbym o zerknięcie i w razie możliwości naniesienie poprawek

public static void main(String[] args) throws IOException, ClassNotFoundException {

        Company[] c = new Company[3];
        File outFile =  new File("empSerial.ser");
        try {
            FileOutputStream fs = new FileOutputStream(outFile);
            ObjectOutputStream os = new ObjectOutputStream(fs);
            os.writeObject(c);
            os.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
0

No ale gdzie jest PROBLEM? Napisz to w postaci:

  1. Co zrobiłeś
  2. Czego oczekiwałeś
  3. Co faktycznie sie stało

W tym kodzie kilka postów wyżej robisz jakis WTF bo zapisujesz do pliku listę obiektów jednego typu a próbujesz wczytać zupełnie inny obiekt xD

1 użytkowników online, w tym zalogowanych: 0, gości: 1