package org.opendedup.util; import java.lang.reflect.Field; public class CloneMagic { public static Object clone(Object o) { Object clone = null; try { clone = o.getClass().newInstance(); } catch (InstantiationException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } // Walk up the superclass hierarchy for (Class<?> obj = o.getClass(); !obj.equals(Object.class); obj = obj .getSuperclass()) { Field[] fields = obj.getDeclaredFields(); for (int i = 0; i < fields.length; i++) { fields[i].setAccessible(true); try { // for each class/suerclass, copy all fields // from this object to the clone fields[i].set(clone, fields[i].get(o)); } catch (IllegalArgumentException e) { } catch (IllegalAccessException e) { } } } return clone; } }