и посмотреть медиа
Tester | Interview Questions
и посмотреть медиа
Interview questions for testers.
Interview questions for testers.
AI bot for text-to-speech and voice cloning in Telegram. Create audio using neural network quickly and easily.
Testing questions: ISTQB, Selenium, API. With examples.
🤔 Какие знаешь методы копирования объектов? В Java есть глубокое и поверхностное копирование объектов. Разберем основные способы их реализации. 🚩Поверхностное копирование (`shallow copy`) При поверхностном копировании копируются только ссылки на вложенные объекты, а не сами объекты. То есть если изменить вложенный объект, он изменится и в оригинале. 🚩Способы поверхностного копирования 🟠Метод `clone()` (реализация `Cloneable`) Чтобы использовать clone(), класс должен реализовать интерфейс Cloneable, а метод clone() нужно переопределить. class Person implements Cloneable { String name; int age; Person(String name, int age) { this.name = name; this.age = age; } @Override protected Object clone() throws CloneNotSupportedException { return super.clone(); // Поверхностное копирование } } public class Main { public static void main(String[] args) throws CloneNotSupportedException { Person p1 = new Person("Alice", 30); Person p2 = (Person) p1.clone(); // Копируем объект System.out.println(p1.name.equals(p2.name)); // true (строка хранится в пуле) System.out.println(p1 == p2); // false (это разные объекты) } } 🟠Конструктор копирования Можно создать новый объект, передав в конструктор другой объект. class Person { String name; int age; Person(String name, int age) { this.name = name; this.age = age; } // Конструктор копирования Person(Person other) { this.name = other.name; this.age = other.age; } } 🚩Глубокое копирование (`deep copy`) При глубоком копировании создаются новые объекты, а не просто копируются ссылки. 🟠Реализация `clone()` с ручным копированием вложенных объектов Если в объекте есть другие объекты, их нужно клонировать вручную. class Address implements Cloneable { String city; Address(String city) { this.city = city; } @Override protected Object clone() throws CloneNotSupportedException { return new Address(this.city); // Создаем новый объект! } } class Person implements Cloneable { String name; int age; Address address; Person(String name, int age, Address address) { this.name = name; this.age = age; this.address = address; } @Override protected Object clone() throws CloneNotSupportedException { Person cloned = (Person) super.clone(); cloned.address = (Address) address.clone(); // Глубокое копирование return cloned; } } Ставь 👍 и забирай 📚 Базу знаний
Открыть канал и посмотреть медиаOnly registered users can share their opinion.
Be the first to share your impression of this resource!