public class CloneableBean
extends java.lang.Object
implements java.io.Serializable, java.lang.Cloneable
It works on all read/write properties, recursively. It support all primitive types, Strings, Collections, Cloneable objects and multi-dimensional arrays of any of them.
Modifier and Type | Field and Description |
---|---|
private java.util.Set |
_ignoreProperties |
private java.lang.Object |
_obj |
private static java.util.Set |
BASIC_TYPES |
private static java.util.Map |
CONSTRUCTOR_BASIC_TYPES |
private static java.lang.Object[] |
NO_PARAMS |
private static java.lang.Class[] |
NO_PARAMS_DEF |
Modifier | Constructor and Description |
---|---|
protected |
CloneableBean()
Default constructor.
|
|
CloneableBean(java.lang.Object obj)
Creates a CloneableBean to be used in a delegation pattern.
|
|
CloneableBean(java.lang.Object obj,
java.util.Set ignoreProperties)
Creates a CloneableBean to be used in a delegation pattern.
|
Modifier and Type | Method and Description |
---|---|
java.lang.Object |
beanClone()
Makes a deep bean clone of the object passed in the constructor.
|
java.lang.Object |
clone()
Makes a deep bean clone of the object.
|
private java.lang.Object |
cloneArray(java.lang.Object array) |
private java.lang.Object |
cloneCollection(java.util.Collection collection) |
private java.lang.Object |
cloneMap(java.util.Map map) |
private java.lang.Object |
doClone(java.lang.Object value) |
private boolean |
isBasicType(java.lang.Class vClass) |
private static final java.lang.Class[] NO_PARAMS_DEF
private static final java.lang.Object[] NO_PARAMS
private java.lang.Object _obj
private java.util.Set _ignoreProperties
private static final java.util.Set BASIC_TYPES
private static final java.util.Map CONSTRUCTOR_BASIC_TYPES
protected CloneableBean()
To be used by classes extending CloneableBean only.
public CloneableBean(java.lang.Object obj)
For example:
public class Foo implements Cloneable {
private CloneableBean _cloneableBean;
public Foo() {
_cloneableBean = new CloneableBean(this);
}
public Object clone() throws CloneNotSupportedException {
return _cloneableBean.beanClone();
}
}
obj
- object bean to clone.public CloneableBean(java.lang.Object obj, java.util.Set ignoreProperties)
The property names in the ignoreProperties Set will not be copied into the cloned instance. This is useful for cases where the Bean has convenience properties (properties that are actually references to other properties or properties of properties). For example SyndFeed and SyndEntry beans have convenience properties, publishedDate, author, copyright and categories all of them mapped to properties in the DC Module.
obj
- object bean to clone.ignoreProperties
- properties to ignore when cloning.public java.lang.Object clone() throws java.lang.CloneNotSupportedException
To be used by classes extending CloneableBean. Although it works also for classes using CloneableBean in a delegation pattern, for correctness those classes should use the
clone
in class java.lang.Object
java.lang.CloneNotSupportedException
- thrown if the object bean could not be cloned.beanClone method.
public java.lang.Object beanClone() throws java.lang.CloneNotSupportedException
To be used by classes using CloneableBean in a delegation pattern,
java.lang.CloneNotSupportedException
- thrown if the object bean could not be cloned.constructor.
private java.lang.Object doClone(java.lang.Object value) throws java.lang.Exception
java.lang.Exception
private java.lang.Object cloneArray(java.lang.Object array) throws java.lang.Exception
java.lang.Exception
private java.lang.Object cloneCollection(java.util.Collection collection) throws java.lang.Exception
java.lang.Exception
private java.lang.Object cloneMap(java.util.Map map) throws java.lang.Exception
java.lang.Exception
private boolean isBasicType(java.lang.Class vClass)
Copyright © Sun Microsystems. All Rights Reserved.