001 package com.croftsoft.core.util.id; 002 003 import com.croftsoft.core.lang.NullArgumentException; 004 005 /********************************************************************* 006 * An Id implementation backed by a String. 007 * 008 * @version 009 * $Id: StringId.java,v 1.3 2008/09/20 05:11:34 croft Exp $ 010 * @since 011 * 2000-01-16 012 * @author 013 * <a href="https://www.croftsoft.com/">David Wallace Croft</a> 014 *********************************************************************/ 015 016 public class StringId 017 implements Id 018 ////////////////////////////////////////////////////////////////////// 019 ////////////////////////////////////////////////////////////////////// 020 { 021 022 private static final long serialVersionUID = 0L; 023 024 // 025 026 private final String s; 027 028 ////////////////////////////////////////////////////////////////////// 029 // constructor method 030 ////////////////////////////////////////////////////////////////////// 031 032 /********************************************************************* 033 * Main constructor. 034 * 035 * @throws NullArgumentException 036 * 037 * If argument is null. 038 *********************************************************************/ 039 public StringId ( String s ) 040 ////////////////////////////////////////////////////////////////////// 041 { 042 NullArgumentException.check ( this.s = s ); 043 } 044 045 ////////////////////////////////////////////////////////////////////// 046 // accessor method 047 ////////////////////////////////////////////////////////////////////// 048 049 public String getS ( ) { return s; } 050 051 ////////////////////////////////////////////////////////////////////// 052 // Id interface methods 053 ////////////////////////////////////////////////////////////////////// 054 055 @Override 056 public boolean equals ( Object other ) 057 ////////////////////////////////////////////////////////////////////// 058 { 059 if ( other == null ) return false; 060 061 if ( !getClass ( ).equals ( other.getClass ( ) ) ) return false; 062 063 return s.equals ( ( ( StringId ) other ).s ); 064 } 065 066 @Override 067 public int hashCode ( ) 068 ////////////////////////////////////////////////////////////////////// 069 { 070 return s.hashCode ( ); 071 } 072 073 @Override 074 public Object clone ( ) 075 ////////////////////////////////////////////////////////////////////// 076 { 077 try 078 { 079 return super.clone ( ); 080 } 081 catch ( CloneNotSupportedException ex ) 082 { 083 // This will never happen. 084 085 throw new RuntimeException ( ); 086 } 087 } 088 089 ////////////////////////////////////////////////////////////////////// 090 // Other methods 091 ////////////////////////////////////////////////////////////////////// 092 093 /********************************************************************* 094 * return s; 095 *********************************************************************/ 096 @Override 097 public String toString ( ) 098 ////////////////////////////////////////////////////////////////////// 099 { 100 return s; 101 } 102 103 ////////////////////////////////////////////////////////////////////// 104 ////////////////////////////////////////////////////////////////////// 105 }