CloneHelper.javaПакет: org.projectforge.framework.utils
Классы: CloneHelper
Импорты: 1 пакет
package org.projectforge.framework.utils;
import java.io.*;
/**
* Для клонирования объекта, включая все поля (рекурсивно).
*
* @author Kai Reinhard (k.reinhard@micromata.de)
*
*/
public class CloneHelper
{
private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(CloneHelper.class);
/**
* Сериализует заданный объект в ByteArray и десериализует его.
* @param origin
* @return
*/
@SuppressWarnings("unchecked")
public static <T> T cloneBySerialization(final T origin)
{
final ByteArrayOutputStream bos = new ByteArrayOutputStream();
try {
final ObjectOutputStream
oos = new ObjectOutputStream(bos);
oos.writeObject(origin);
oos.flush();
oos.close();
bos.close();
} catch (final IOException ex) {
log.error("Исключение при клонировании объекта '" + origin + "': " + ex, ex);
return null;
}
final byte[] byteData = bos.toByteArray();
final ByteArrayInputStream bais = new ByteArrayInputStream(byteData);
T object;
try {
object = (T) new ObjectInputStream(bais).readObject();
return object;
} catch (final ClassNotFoundException | IOException ex) {
log.error("Исключение при клонировании объекта '" + origin + "': " + ex, ex);
return null;
}
}
}
868d6abb7 2025 -> 2026 63081666f Заголовки исходных файлов: 2024-> 2025. 5f9bbfbd3 Исправление опечаток в каталоге projectforge-business b6092df09 Авторские права 2023 -> 2024 ab45d51fa Авторские права 2001-2022 -> 2001-2023.