Предположим, у нас есть произвольный граф, представленный узлами и указателями, например:
class Node
{
public ValueType data;
public ArrayList<Node> adj;
}
Теперь я хочу сделать его копию или записать/прочитать его на диск (также известный как сериализация/десериализация). Я также знаю, что это можно сделать с помощью алгоритма поиска + ассоциативные массивы. И, оказывается, этот метод называется swizzling.
А вот и мой вопрос:
Я слышал, что в Java, объявляя класс Serializable, эта функция предоставляется вам автоматически. (что для меня звучит как магия!)
Это утверждение верно? Запускает ли Java автоматически BFS для обхода графа и перемещения указателей? Другими словами, выполняет ли сериализация/десериализация клонирование объекта для меня? (совершенно новый объект с той же структурой, но с новыми узлами и обновленными указателями)
Если да, то что, если в некоторых случаях я просто хочу скопировать указатели? что, если я хочу сериализовать объект только для того, чтобы сохранить исходные указатели?
Я ценю любые комментарии по этому поводу. :-)