package java.lang;

/**
 * A class implements the <code>Cloneable</code> interface to indicate to the
 * {@link java.lang.Object#clone()} method that it is legal for that method to make a
 * field-for-field copy of instances of that class.
 * <p>
 * Invoking Object's clone method on an instance that does not implement the <code>Cloneable</code>
 * interface results in the exception <code>CloneNotSupportedException</code> being thrown.
 * <p>
 * By convention, classes that implement this interface should override <code>Object.clone</code> (which
 * is protected) with a public method. See {@link java.lang.Object#clone()} for details on
 * overriding this method.
 * <p>
 * Note that this interface does <i>not</i> contain the <code>clone</code> method. Therefore, it is not
 * possible to clone an object merely by virtue of the fact that it implements this interface. Even
 * if the clone method is invoked reflectively, there is no guarantee that it will succeed.
 *
 * @see java.lang.CloneNotSupportedException
 * @see java.lang.Object#clone()
 */
public interface Cloneable {
}
