/* * @(#) ReallyCloneable.java - Interface for cloneable objects. * (c) 2000 Ivan Maidanski http://ivmai.chat.ru * Freeware class library sources. All rights reserved. ** * Language: Java [pure] * Tested with: JDK v1.1.6 * Last modified: 2000-12-20 16:55:00 GMT+03:00 */ /* * This software is the proprietary information of the author. ** * Permission to use, copy, and distribute this software and its * documentation for non-commercial purposes and without fee is * hereby granted provided that this copyright notice appears in all * copies. ** * This software should not be modified in any way; any found bug * should be reported to the author. ** * The author disclaims all warranties with regard to this software, * including all implied warranties of merchantability and fitness. * In no event shall the author be liable for any special, indirect * or consequential damages or any damages whatsoever resulting from * loss of use, data or profits, whether in an action of contract, * negligence or other tortuous action, arising out of or in * connection with the use or performance of this software. */ package ivmai.util; /** * Interface for cloneable objects. ** * This interface declares/unhides the public method * for making an instance "exact" copy (unlike * Cloneable interface which is only tagging). The * standard Cloneable interface is extended here to * allow the proper usage of native clone() method of * Object class (without throwing * CloneNotSupportedException) Important notes: the * classes which implement this interface should also override the * standard equals(Object) and hashCode() * methods. ** * @version 2.0 * @author Ivan Maidanski ** * @since 2.0 */ public interface ReallyCloneable extends Cloneable { /** * Creates and returns a copy of this object. ** * By the clone() standard definition, this method * creates a new instance of the class of this object and * initializes all its fields with exactly the contents of the * corresponding fields of this object. Typically, native * clone() method of Object class is used * inside this method. ** * @return * a copy (not null and != this) of * this instance. * @exception OutOfMemoryError * if there is not enough memory. */ public abstract Object clone(); }