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 }