EN · DE · RU · FR · ES

#728: CloneHelper.java

projectforge-business/src/main/java/org/projectforge/framework/utils/CloneHelper.java Тип: Java · Роль: Утилита · Исходник: projectforge-business/src/main/java/org/projectforge/framework/utils/CloneHelper.java 70 строк · 32 кода · 33 комментария · 5 пустых
Статические утилитарные методы для CloneHelper. Набор чистых функций без побочных эффектов, предоставляющих общие вспомогательные операции.

Структура кода

Пакет: 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;
    }
  }
}

История Git

868d6abb7 2025 -> 2026
63081666f Заголовки исходных файлов: 2024-> 2025.
5f9bbfbd3 Исправление опечаток в каталоге projectforge-business
b6092df09 Авторские права 2023 -> 2024
ab45d51fa Авторские права 2001-2022 -> 2001-2023.