Мы реализовали универсальный механизм глубокого копирования с использованием сериализации.
import java.io.*;
public class CopyUtil {
public static Object clone(Object source) {
Object retVal = null;
try {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(baos);
oos.writeObject(source);
oos.flush();
oos.close();
ObjectInputStream in = new ObjectInputStream(new ByteArrayInputStream(baos.toByteArray()));
retVal = in.readObject();
} catch (IOException ex) {
ex.printStackTrace();
} catch (ClassNotFoundException ex) {
ex.printStackTrace();
}
return retVal;
}
}
Существует относительно большое количество классов объектов, которые постоянно развиваются, чтобы поддерживать - это было причиной, почему мы использовали механизм клонирования общего назначения. Мы не Идея поддерживать readObject ()
и writeObject ()
для 200+ классов.
К сожалению, механизм сериализации в Java относительно медленный, и у нас возникают проблемы, когда наша система находится под пиковой нагрузкой.
Существуют ли какие-либо предлагаемые подходы о том, как можно немного ускорить процесс или (в случае неправильного выполнения этого) альтернативные методы клонирования объектов?