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 }