Я начинаю Java, и начал играть с сериализацией. Интересно, есть ли способ написать функцию десериализации внутри самого класса? Позвольте мне уточнить, что я имею в виду: я могу десериализовать объект (т.е. из класса Person
) из другого класса, и он работает:
public class Dummy{
...
public static void main(String args[])
{
...
Person father = null;
try {
FileInputStream load = new FileInputStream(saved_file);
ObjectInputStream in = new ObjectInputStream(load);
indiv = (Person) in.readObject();
in.close();
load.close();
} catch (...) { ... }
}
}
Но, чтобы быть аккуратным, возможно ли переместить это в класс Person как функцию? Например, сделать что-то вроде этого:
public class Person implements Serializable {
private boolean isOrphan = false;
private Person parent;
...
public void load(File saved_file) {
try {
FileInputStream load = new FileInputStream(saved_file);
ObjectInputStream in = new ObjectInputStream(load);
this = (Person) in.readObject(); // Error: cannot assign a value to final variabl this
in.close();
load.close();
} catch (...) { ... }
}
}
А потом в другом классе просто назовите это:
public class Dummy{
...
public static void main(String args[])
{
...
Person father = null;
father.load(saved_file);
}
}