EN · DE · RU · FR · ES

#728: CloneHelper.java

projectforge-business/src/main/java/org/projectforge/framework/utils/CloneHelper.java Tipo: Java · Rol: Utilidad · Fuente: projectforge-business/src/main/java/org/projectforge/framework/utils/CloneHelper.java 70 líneas · 32 código · 33 comentarios · 5 en blanco
Métodos de utilidad estáticos para CloneHelper. Colección de funciones puras sin efectos secundarios, que proporcionan operaciones auxiliares comunes.

Estructura del código

Paquete: org.projectforge.framework.utils

Clases: CloneHelper

Importaciones: 1 paquete

Código fuente (resumido)

package org.projectforge.framework.utils;

import java.io.*;

/**
 * Para clonar un objeto incluyendo todos los campos (recursivo).
 * 
 * @author Kai Reinhard (k.reinhard@micromata.de)
 * 
 */
public class CloneHelper
{
  private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(CloneHelper.class);

  /**
   * Serializa el objeto dado como ByteArray y lo deserializa.
   * @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("Excepción encontrada al clonar el objeto '" + 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("Excepción encontrada al clonar el objeto '" + origin + "': " + ex, ex);
      return null;
    }
  }
}

Historial de Git

868d6abb7 2025 -> 2026
63081666f Encabezados de archivos fuente: 2024-> 2025.
5f9bbfbd3 Corrección de errores tipográficos en el directorio projectforge-business
b6092df09 Copyright 2023 -> 2024
ab45d51fa Copyright 2001-2022 -> 2001-2023.