Как я понял из того, что я прочитал, в принципе есть два способа создания совершенно новых объектов в Java: 1) с помощью оператора new
и 2) с помощью сериализации (для глубокого копирования, например). Все другие манипуляции с объектами (например, присваивание, например) касаются ссылок на существующие объекты. Но в чем разница между двумя вышеупомянутыми способами с точки зрения внутренней логики? Похоже, что одно отличие состоит в том, что сериализация каким-то образом не использует методы-конструкторы. Я прав? Существуют ли другие различия?Новые объекты: новый оператор и сериализация
«Внутренняя логика» Я имею в виду, как компилятор (или тот, кто имеет дело с ним) создает объект поэтапно, какой алгоритм он использует, какие методы используются для этого и т. Д. Больше похоже на то, о чем писала Маргарет Блум в своем ответе, но более подробно.
ДАЛЕЕ CONFUSION ПОЯСНЕНИЯ:
Так что я получаю это правильно, что во время десериализации копию объекта:
class Class1 {
static ARRAY_LENGTH = 10;
public class1() {
int[] anArray = new int[ARRAY_LENGTH];
anArray[0] = 5;
...
anArray[9] = -2;
}
}
будет включать в себя копию массива, созданного elsehow (как? поскольку конструктор не был вызван)? И, кроме того, хотя исходный массив (до сериализации) был создан с использованием поля static
(который потерян во время сериализации), его десериализованная копия будет, тем не менее, идентична исходному массиву?
Ну, есть 'clone()' тоже. – markspace
И несколько методов в JNI. – EJP
Вы должны сами написать «внутреннюю логику» конструкторов и код сериализации.Поэтому ответ на ваш вопрос: «Какую бы разницу вы ни делали». Или вы имели в виду что-то еще? – Raedwald