読者です 読者をやめる 読者になる 読者になる

1行でシャローコピー/ディープコピー

Java

簡単にシャローコピー(浅いコピー)/ディープコピー(深いコピー)をする方法です。
Jakarta Commons の BeanUtils や Lang を利用します。

シャローコピー


import org.apache.commons.beanutils.BeanUtils;

public SampleBean shallowCopy(SampleBean src) {
SampleBean dest = (SampleBean)BeanUtils.cloneBean(src);
return dest;
}

単に、プロパティをコピーしているだけです。
S2を利用している場合は、org.seasar.framework.beans.util.BeanUtil#copyProperties を利用しても、同様のことができます。

ディープコピー


import org.apache.commons.lang.SerializationUtils;

public SampleBean deepCopy(SampleBean src) {
SampleBean dest = (SampleBean)SerializationUtils.clone(src);
return dest;
}

コピーするクラスは、java.io.Serializable を実装している必要があります。
内部では、シリアライズ → デシアライズをすることで、ディープコピーを実現しています。