for deep cloning (clones the entire object hierarchy):
- commons-lang SerializationUtils - using serialization - if all classes are in your control and you can force implementing
Serializable
- Java Deep Cloning Library - using reflection - in cases when the classes or the objects you want to clone are out of your control (a 3rd party library) and you can't make them implement
Serializable
, or in cases you don't want to implementSerializable
for shallow cloning (clones only the first level properties):
- commons-beanutils BeanUtils - in most cases
- Spring BeanUtils - if you are already using spring and hence have this utility on the classpath.
I deliberately omitted the "do-it-yourself" option - the API's above provide a good control over what to and what not to clone (for example using
transient
, or String[] ignoreProperties
), so reinventing the wheel isn't preferred.
No comments:
Post a Comment