EN · DE · RU · FR · ES

#728: CloneHelper.java

projectforge-business/src/main/java/org/projectforge/framework/utils/CloneHelper.java Typ: Java · Rolle: Dienstprogramm · Quelle: projectforge-business/src/main/java/org/projectforge/framework/utils/CloneHelper.java 70 Zeilen · 32 Code · 33 Kommentare · 5 leer
Statische Hilfsmethoden für CloneHelper. Sammlung von reinen Funktionen ohne Nebenwirkungen, die allgemeine Hilfsoperationen bereitstellen.

Codestruktur

Paket: org.projectforge.framework.utils

Klassen: CloneHelper

Importe: 1 Paket

Quellcode (gekürzt)

package org.projectforge.framework.utils;

import java.io.*;

/**
 * Zum Klonen eines Objekts einschließlich aller Felder (rekursiv).
 * 
 * @author Kai Reinhard (k.reinhard@micromata.de)
 * 
 */
public class CloneHelper
{
  private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(CloneHelper.class);

  /**
   * Serialisiert das angegebene Objekt als ByteArray und deserialisiert es.
   * @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("Ausnahme beim Klonen des angegebenen Objekts '" + 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("Ausnahme beim Klonen des angegebenen Objekts '" + origin + "': " + ex, ex);
      return null;
    }
  }
}

Git-Verlauf

868d6abb7 2025 -> 2026
63081666f Quellcode-Dateiköpfe: 2024 -> 2025.
5f9bbfbd3 Korrigiere Tippfehler im Verzeichnis projectforge-business
b6092df09 Copyright 2023 -> 2024
ab45d51fa Copyright 2001-2022 -> 2001-2023.