com.company.Przyklad03@22d8cfe0 при чтении обьекта из файла.ser - Java

я пытаюсь записать обьект в файл.ser, и у меня вроде это получилось, но когда я
хочу считать этот файл и вывести это в консоли то получаю это com.company.Przyklad03@22d8cfe0 Вот мой код
Запись обьекта:

package com.company;

import java.io.FileOutputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;

public class Przyklad03 implements Serializable {
    private String test;

    private void setTest(String s) {
        test = s;
    }

    public static void main(String[] args) {
        Przyklad03 przyklad03 = new Przyklad03();
        przyklad03.setTest("Ta tresc bedzie zapisana w pliku...");
        try {
            ObjectOutputStream o = new ObjectOutputStream(new FileOutputStream("przyklad03.ser"));
            o.writeObject(przyklad03);
            o.close();
        } catch (Exception exc) {
            exc.printStackTrace();
        }
    }
}

Чтение обьекта:

package com.company;

import java.io.FileInputStream;
import java.io.ObjectInputStream;
import java.io.Serializable;

public class Przyklad04 implements Serializable {
    public static void main(String[] args) {
        try {
            ObjectInputStream o = new ObjectInputStream(new FileInputStream("przyklad03.ser"));
            Przyklad03 obj = (Przyklad03) o.readObject();
            o.close();
            System.out.print(obj);
        } catch (Exception exc) {
            exc.printStackTrace();
        }
    }
}

Ответы (2 шт):

Автор решения: OwlCodR

Вот здесь описана похожая ситуация

В вашем случае программа отработала корректно. Если вы хотите, чтобы при вызове System.out.print(obj); выводилась какая-то информация, вам необходимо в классе Przyklad03 создать метод

public String toString() {
    return test; 
    // Или что угодно вместо:
    // return getClass().getName() + "@" + Integer.toHexString(hashCode());
}

Можно сделать иначе, например так:

System.out.print(obj.getText());

Тогда вам нужно создать метод

public String getText() {
    return test; 
}

Суть в том, что при System.out.print(obj); компилятор автоматически вызывает System.out.print(obj.toString());, поэтому более элегантно было бы переопределить этот метод.

Но почему переопределить, я же ни от кого не наследовался?

На самом деле все классы в Java наследуются от класса Object, где реализован toString()

Однако можно и просто создать отдельную функцию, например getText()

→ Ссылка
Автор решения: nikoshi
package com.company;

import java.io.FileOutputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;

public class Przyklad03 implements Serializable {
    private String test;

    @Override
    public String toString() {
        return test;
    }

    private void setTest(String s) {
        test = s;
    }

    public static void main(String[] args) {
        Przyklad03 przyklad03 = new Przyklad03();
        przyklad03.setTest("Ta tresc bedzie zapisana w pliku...");
        try {
            ObjectOutputStream o = new ObjectOutputStream(new FileOutputStream("przyklad03.ser"));
            o.writeObject(przyklad03);
            o.close();
        } catch (Exception exc) {
            exc.printStackTrace();
        }
    }
}
→ Ссылка