source: src/main/java/agents/org/apache/commons/lang/mutable/MutableInt.java

Last change on this file was 127, checked in by Wouter Pasman, 6 years ago

#41 ROLL BACK of rev.126 . So this version is equal to rev. 125

File size: 7.8 KB
Line 
1/*
2 * Licensed to the Apache Software Foundation (ASF) under one or more
3 * contributor license agreements. See the NOTICE file distributed with
4 * this work for additional information regarding copyright ownership.
5 * The ASF licenses this file to You under the Apache License, Version 2.0
6 * (the "License"); you may not use this file except in compliance with
7 * the License. You may obtain a copy of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 */
17package agents.org.apache.commons.lang.mutable;
18
19/**
20 * A mutable <code>int</code> wrapper.
21 *
22 * @see Integer
23 * @since 2.1
24 * @author Apache Software Foundation
25 * @version $Id: MutableInt.java 905707 2010-02-02 16:59:59Z niallp $
26 */
27public class MutableInt extends Number implements Comparable, Mutable {
28
29 /**
30 * Required for serialization support.
31 *
32 * @see java.io.Serializable
33 */
34 private static final long serialVersionUID = 512176391864L;
35
36 /** The mutable value. */
37 private int value;
38
39 /**
40 * Constructs a new MutableInt with the default value of zero.
41 */
42 public MutableInt() {
43 super();
44 }
45
46 /**
47 * Constructs a new MutableInt with the specified value.
48 *
49 * @param value the initial value to store
50 */
51 public MutableInt(int value) {
52 super();
53 this.value = value;
54 }
55
56 /**
57 * Constructs a new MutableInt with the specified value.
58 *
59 * @param value the initial value to store, not null
60 * @throws NullPointerException if the object is null
61 */
62 public MutableInt(Number value) {
63 super();
64 this.value = value.intValue();
65 }
66
67 /**
68 * Constructs a new MutableInt parsing the given string.
69 *
70 * @param value the string to parse, not null
71 * @throws NumberFormatException if the string cannot be parsed into an int
72 * @since 2.5
73 */
74 public MutableInt(String value) throws NumberFormatException {
75 super();
76 this.value = Integer.parseInt(value);
77 }
78
79 //-----------------------------------------------------------------------
80 /**
81 * Gets the value as a Integer instance.
82 *
83 * @return the value as a Integer, never null
84 */
85 public Object getValue() {
86 return new Integer(this.value);
87 }
88
89 /**
90 * Sets the value.
91 *
92 * @param value the value to set
93 */
94 public void setValue(int value) {
95 this.value = value;
96 }
97
98 /**
99 * Sets the value from any Number instance.
100 *
101 * @param value the value to set, not null
102 * @throws NullPointerException if the object is null
103 * @throws ClassCastException if the type is not a {@link Number}
104 */
105 public void setValue(Object value) {
106 setValue(((Number) value).intValue());
107 }
108
109 //-----------------------------------------------------------------------
110 /**
111 * Increments the value.
112 *
113 * @since Commons Lang 2.2
114 */
115 public void increment() {
116 value++;
117 }
118
119 /**
120 * Decrements the value.
121 *
122 * @since Commons Lang 2.2
123 */
124 public void decrement() {
125 value--;
126 }
127
128 //-----------------------------------------------------------------------
129 /**
130 * Adds a value to the value of this instance.
131 *
132 * @param operand the value to add, not null
133 * @since Commons Lang 2.2
134 */
135 public void add(int operand) {
136 this.value += operand;
137 }
138
139 /**
140 * Adds a value to the value of this instance.
141 *
142 * @param operand the value to add, not null
143 * @throws NullPointerException if the object is null
144 * @since Commons Lang 2.2
145 */
146 public void add(Number operand) {
147 this.value += operand.intValue();
148 }
149
150 /**
151 * Subtracts a value from the value of this instance.
152 *
153 * @param operand the value to subtract, not null
154 * @since Commons Lang 2.2
155 */
156 public void subtract(int operand) {
157 this.value -= operand;
158 }
159
160 /**
161 * Subtracts a value from the value of this instance.
162 *
163 * @param operand the value to subtract, not null
164 * @throws NullPointerException if the object is null
165 * @since Commons Lang 2.2
166 */
167 public void subtract(Number operand) {
168 this.value -= operand.intValue();
169 }
170
171 //-----------------------------------------------------------------------
172 // shortValue and bytValue rely on Number implementation
173 /**
174 * Returns the value of this MutableInt as an int.
175 *
176 * @return the numeric value represented by this object after conversion to type int.
177 */
178 public int intValue() {
179 return value;
180 }
181
182 /**
183 * Returns the value of this MutableInt as a long.
184 *
185 * @return the numeric value represented by this object after conversion to type long.
186 */
187 public long longValue() {
188 return value;
189 }
190
191 /**
192 * Returns the value of this MutableInt as a float.
193 *
194 * @return the numeric value represented by this object after conversion to type float.
195 */
196 public float floatValue() {
197 return value;
198 }
199
200 /**
201 * Returns the value of this MutableInt as a double.
202 *
203 * @return the numeric value represented by this object after conversion to type double.
204 */
205 public double doubleValue() {
206 return value;
207 }
208
209 //-----------------------------------------------------------------------
210 /**
211 * Gets this mutable as an instance of Integer.
212 *
213 * @return a Integer instance containing the value from this mutable, never null
214 */
215 public Integer toInteger() {
216 return new Integer(intValue());
217 }
218
219 //-----------------------------------------------------------------------
220 /**
221 * Compares this object to the specified object. The result is <code>true</code> if and only if the argument is
222 * not <code>null</code> and is a <code>MutableInt</code> object that contains the same <code>int</code> value
223 * as this object.
224 *
225 * @param obj the object to compare with, null returns false
226 * @return <code>true</code> if the objects are the same; <code>false</code> otherwise.
227 */
228 public boolean equals(Object obj) {
229 if (obj instanceof MutableInt) {
230 return value == ((MutableInt) obj).intValue();
231 }
232 return false;
233 }
234
235 /**
236 * Returns a suitable hash code for this mutable.
237 *
238 * @return a suitable hash code
239 */
240 public int hashCode() {
241 return value;
242 }
243
244 //-----------------------------------------------------------------------
245 /**
246 * Compares this mutable to another in ascending order.
247 *
248 * @param obj the other mutable to compare to, not null
249 * @return negative if this is less, zero if equal, positive if greater
250 * @throws ClassCastException if the argument is not a MutableInt
251 */
252 public int compareTo(Object obj) {
253 MutableInt other = (MutableInt) obj;
254 int anotherVal = other.value;
255 return value < anotherVal ? -1 : (value == anotherVal ? 0 : 1);
256 }
257
258 //-----------------------------------------------------------------------
259 /**
260 * Returns the String value of this mutable.
261 *
262 * @return the mutable value as a string
263 */
264 public String toString() {
265 return String.valueOf(value);
266 }
267
268}
Note: See TracBrowser for help on using the repository browser.