💨Метод для глубокого копирования объектов. Это часто используется, когда нужно создать копию объекта, сохраняя его данные, но не связи с другими объектами.



Вот пример метода для глубокого копирования:

import java.io.*;



public class DeepCopyExample {

    public static void main(String[] args) {

        Person person = new Person("John", 30);

        Person deepCopy = deepCopy(person);

       

        System.out.println("Original: " + person.getName() + ", " + person.getAge());

        System.out.println("Deep copy: " + deepCopy.getName() + ", " + deepCopy.getAge());

    }

   

    public static <T extends Serializable> T deepCopy(T object) {

        try {

            ByteArrayOutputStream byteOutputStream = new ByteArrayOutputStream();

            ObjectOutputStream objectOutputStream = new ObjectOutputStream(byteOutputStream);

            objectOutputStream.writeObject(object);

           

            ByteArrayInputStream byteInputStream = new ByteArrayInputStream(byteOutputStream.toByteArray());

            ObjectInputStream objectInputStream = new ObjectInputStream(byteInputStream);

            T copy = (T) objectInputStream.readObject();

           

            return copy;

        } catch (IOException | ClassNotFoundException e) {

            e.printStackTrace();

            return null;

        }

    }

}



class Person implements Serializable {

    private String name;

    private int age;

   

    public Person(String name, int age) {

        this.name = name;

        this.age = age;

    }

   

    public String getName() {

        return name;

    }

   

    public int getAge() {

        return age;

    }

}




В этом примере мы создаем класс Person, который реализует интерфейс Serializable, чтобы объекты этого класса можно было сериализовать и десериализовать. Затем мы создаем метод deepCopy, который принимает объект и возвращает его глубокую копию.



Мы используем ByteArrayOutputStream и ObjectOutputStream, чтобы записать объект в байтовый массив, а затем ByteArrayInputStream и ObjectInputStream, чтобы прочитать копию объекта из массива.



В методе main мы создаем объект Person, затем создаем его глубокую копию с помощью метода deepCopy и выводим на экран значения оригинального и скопированного объекта.



🔢 Аудит безопасности