Mega Code Archive

 
Categories / Java / Data Type
 

Mutable Integer

/**  * created Aug 13, 2004  *   * @by Thorsten Meinl (Thorsten.Meinl@informatik.uni-erlangen.de)  *  * Copyright 2006 Thorsten Meinl  *  * This file is part of parsemis.  *  * Licence:   *  LGPL: http://www.gnu.org/licenses/lgpl.html  *   EPL: http://www.eclipse.org/org/documents/epl-v10.php  *   See the LICENSE file in the project's top-level directory for details.  */ //package de.parsemis.utils; /**  * This class is the same as Integer but the stored value can be changed.  *   * @author Thorsten Meinl (Thorsten.Meinl@informatik.uni-erlangen.de)  *   */ public class MutableInteger extends Number implements     Comparable<MutableInteger>, SynchronizedCounter {   private static final long serialVersionUID = 532556164094282571L;   private int m_value;   /**    * Creates a new MutableInteger with the given initial value.    *     * @param value    *            the value    */   public MutableInteger(final int value) {     m_value = value;   }   /*    * (non-Javadoc)    *     * @see java.lang.Comparable#compareTo(java.lang.Object)    */   public int compareTo(final MutableInteger o) {     return m_value - o.m_value;   }   /**    * Decrements the value by one.    *     * @return the new value    */   public int dec() {     return --m_value;   }   /*    * (non-Javadoc)    *     * @see java.lang.Number#doubleValue()    */   @Override   public double doubleValue() {     return m_value;   }   /*    * (non-Javadoc)    *     * @see java.lang.Object#equals(java.lang.Object)    */   @Override   public boolean equals(final Object obj) {     if (obj == null || !(obj instanceof MutableInteger)) {       return false;     }     return m_value == ((MutableInteger) obj).m_value;   }   /*    * (non-Javadoc)    *     * @see java.lang.Number#floatValue()    */   @Override   public float floatValue() {     return m_value;   }   /*    * (non-Javadoc)    *     * @see java.lang.Object#hashCode()    */   @Override   public int hashCode() {     return m_value;   }   /**    * Increments the value by one.    *     * @return the new value    */   public int inc() {     return ++m_value;   }   /*    * (non-Javadoc)    *     * @see java.lang.Number#intValue()    */   @Override   public int intValue() {     return m_value;   }   /*    * (non-Javadoc)    *     * @see java.lang.Number#longValue()    */   @Override   public long longValue() {     return m_value;   }   /*    * (non-Javadoc)    *     * @see de.parsemis.utils.Counter#next()    */   public synchronized int next() {     return m_value++;   }   /**    * Sets the value to a new value    *     * @param value    *            the new value    */   public void setValue(final int value) {     m_value = value;   } } interface SynchronizedCounter {   public int next(); }