Cloneable
Cloneable is a marker interface in the Java programming language. It declares no methods and is implemented by a class to indicate that its instances can be cloned using the protected Object.clone() method. If an object's class does not implement Cloneable and its clone() method is invoked, the runtime throws CloneNotSupportedException.
Object.clone() performs a field-by-field copy of the object, producing a shallow copy. To enable public access
Implementing a robust clone requires careful handling of nested objects, final fields, and potential state inconsistency.
Criticism: Cloneable is considered flawed by many Java experts, as it relies on a specific inheritance structure
See also: java.lang.Object, CloneNotSupportedException, Copy constructor, Serialization.