001         package com.croftsoft.core.util.id;
002    
003         import java.io.Serializable;
004    
005         /*********************************************************************
006         * An Id is used for consistent cross-process identification.
007         *
008         * <p>
009         * Id objects are useful for identifying, by equality, distributed
010         * and persistent objects (space and time, respectively).
011         * </p>
012         *
013         * <p>
014         * An object that implements Id has the following characteristics:
015         *
016         * <ul>
017         * <li> immutable;</li>
018         * <li> Serializable and deeply Cloneable; and</li>
019         * <li> results from the methods equals() and hashCode() are not based
020         *      upon transient data and are consistent across processes.</li>
021         * </ul>
022         * </p>
023         *
024         * @version
025         *   2003-06-17
026         * @since
027         *   2000-01-16
028         * @author
029         *   <a href="https://www.croftsoft.com/">David Wallace Croft</a>
030         *********************************************************************/
031    
032         public interface  Id
033           extends Cloneable, Serializable
034         //////////////////////////////////////////////////////////////////////
035         //////////////////////////////////////////////////////////////////////
036         {
037    
038         public Object   clone    ( );
039    
040         public boolean  equals   ( Object  other );
041    
042         public int      hashCode ( );
043    
044         //////////////////////////////////////////////////////////////////////
045         //////////////////////////////////////////////////////////////////////
046         }