Как создать новый экземпляр из старого?

У меня есть обстоятельство, когда мне нужно создать новый экземпляр класса из другого экземпляра этого класса. Это должен быть новый экземпляр, а не ссылка на старый экземпляр, потому что новым экземпляром нужно манипулировать, не затрагивая старый экземпляр.

Я пришел к выводу, что у меня должен быть конструктор в моем классе и в каждом классе для каждого типа, используемого в этом классе, который принимает свой собственный тип в качестве параметра и создает новые типы из этого параметра:

public class MainClass {
public Type0 type0;
public Type1 type1;
public Type2 type2;MainClass(MainClass mc) {
type0 = new Type0(mc.type0);
type1 = new Type1(mc.type1);
type2 = new Type2(mc.type2);
}
}public class Type0() {
public int i;
public SomeOtherType t;

Type0(Type0 t0) {
i = t0.i;
t = new SomeOtherType(t0.t);
}
}

. . .

Все это было бы намного проще в C ++, где я мог бы просто сказать newInstance = oldInstance. Но в Java, какова лучшая практика для создания нового экземпляра из старого экземпляра? Это то, что мне придется сделать? Является ли наилучшей практикой в ​​Java использование этих типов конструкторов в каждом классе? Или есть лучший способ сделать это?

1

Решение

Не это не рекомендуется использовать метод клонирования (в случае, если кто-то предлагает это).

Вы правы, что хороший способ сделать это — предоставить конструктор копирования, который получает экземпляр для копирования. Это то, что Джошуа Блох рекомендует в своей популярной книге «Эффективная Java».

1

Другие решения


По вопросам рекламы ammmcru@yandex.ru
Adblock
detector