MuCharacter.java |
/*************************************** * * * JBoss: The OpenSource J2EE WebOS * * * * Distributable under LGPL license. * * See terms of license at gnu.org. * * * ***************************************/ package org.jboss.util; import java.io.Serializable; /** * A mutable character class. * * @version <tt>$Revision: 1.1.28.1 $</tt> * @author <a href="mailto:jason@planet57.com">Jason Dillon</a> */ public class MuCharacter implements Comparable, Cloneable, Serializable, Mutable { static final long serialVersionUID = 1397485614608419257L; /** <code>char</code> value */ private char value = 0; /** * Construct a new mutable character. */ public MuCharacter() {} /** * Construct a new mutable character. * * @param c <code>char</code> value. */ public MuCharacter(char c) { value = c; } /** * Construct a new mutable character. * * @param obj Object to convert to a <code>char</code>. */ public MuCharacter(Object obj) { setValue(obj); } /** * Set the value. * * @param c <code>char</code> value. * @return The previous value. */ public char set(char c) { char old = value; value = c; return old; } /** * Get the current value. * * @return The current value. */ public char get() { return value; } /** * Return the <code>char</code> value of this mutable character. * * @return <code>char</code> value. */ public char charValue() { return value; } /** * Compares this object with the specified long for order. * * @param other Value to compare with. * @return A negative integer, zero, or a positive integer as * this object is less than, equal to, or greater than * the specified object. */ public int compareTo(char other) { return (value < other) ? -1 : (value == other) ? 0 : 1; } /** * Compares this object with the specified object for order. * * @param other Value to compare with. * @return A negative integer, zero, or a positive integer as * this object is less than, equal to, or greater than * the specified object. * * @throws ClassCastException Object is not a MuCharacter. */ public int compareTo(Object obj) { return compareTo((MuCharacter)obj); } /** * Convert this mutable character to a string. * * @return String value. */ public String toString() { return String.valueOf(value); } /** * Get the hash code of this mutable character. * * @return Hash code. */ public int hashCode() { return value; } /** * Test the equality of this mutable character and another object. * * @param obj Qbject to test equality with. * @return True if object is equal. */ public boolean equals(Object obj) { if (obj == this) return true; if (obj != null && obj.getClass() == getClass()) { return value == ((MuCharacter)obj).charValue(); } return false; } /** * Return a cloned copy of this mutable character. * * @return Cloned mutable character. */ public Object clone() { try { return super.clone(); } catch (CloneNotSupportedException e) { throw new InternalError(); } } ///////////////////////////////////////////////////////////////////////// // Mutable Support // ///////////////////////////////////////////////////////////////////////// /** * Set the value of this mutable character. * * @param obj Object to convert to a <code>char</code>. * * @throws NotCoercibleException Can not convert to <code>char</code>. */ public void setValue(Object obj) { if (obj instanceof MuCharacter) { value = ((MuCharacter)obj).value; } else if (obj instanceof Character) { value = ((Character)obj).charValue(); } else if (obj instanceof Number) { value = (char)((Number)obj).intValue(); } else { throw new NotCoercibleException("can not convert to 'char': " + obj); } } /** * Return the char value of this mutable character. * * @return <code>java.lang.Character</code> value. */ public Object getValue() { return new Character(value); } }
MuCharacter.java |