WarpPI/src/com/rits/cloning/FastClonerCustomMap.java
2016-09-02 20:32:37 +02:00

28 lines
757 B
Java

package com.rits.cloning;
import java.util.Map;
import java.util.Set;
/**
* @author kostantinos.kougios
*
* 21 May 2009
*/
@SuppressWarnings({ "unchecked", "rawtypes" })
public abstract class FastClonerCustomMap<T extends Map> implements IFastCloner {
@Override
public Object clone(final Object t, final IDeepCloner cloner, final Map<Object, Object> clones) {
final T m = (T) t;
final T result = getInstance((T) t);
final Set<Map.Entry<Object, Object>> entrySet = m.entrySet();
for (final Map.Entry e : entrySet) {
final Object key = cloner.deepClone(e.getKey(), clones);
final Object value = cloner.deepClone(e.getValue(), clones);
result.put(key, value);
}
return result;
}
protected abstract T getInstance(T t);
}