Назад к задачамПолучайте помощь с лайвкодингом в реальном времени с Sobes Copilot
Junior — Senior
22
Реализация глубокой копии объекта Customer
Условие задачи
Задача состоит в том, чтобы реализовать метод clone() в классе Customer, который будет создавать полную (глубокую) копию данного объекта.
Требования:
- Склонированный объект не должен ссылаться на те же вложенные экземпляры (
Address,List<CellNumber>), что и оригинал. - Все вложенные структуры внутри
Customerдолжны быть независимыми копиями. - После выполнения клонирования метод
equals()должен возвращатьtrue, однако ссылки на вложенные объекты должны указывать на разные экземпляры.
package com.jetbulb.interviews;
import java.util.Collections;
import java.util.List;
public class JetbulbInterview {
public static void main(String[] args) {
Customer customer = new Customer(
"123",
66,
new Address(1, "Street"),
Collections.singletonList(new CellNumber("777-555-666", 3.14D))
);
Customer clonedCustomer = customer.clone();
System.out.println(customer.equals(clonedCustomer)); // true
System.out.println(customer == clonedCustomer); // false
System.out.println(customer.address == clonedCustomer.address); // false
System.out.println(customer.number == clonedCustomer.number); // false
}
}
class Customer implements Cloneable {
String id;
int age;
Address address;
List<CellNumber> number;
}
class Address implements Cloneable {
int id;
String name;
}
class CellNumber implements Cloneable {
String number;
double coverage;
}