Add MutableObject
git-svn-id: https://svn.apache.org/repos/asf/jakarta/commons/proper/lang/trunk@137874 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
fbeb9d58da
commit
3787473c50
|
@ -0,0 +1,106 @@
|
|||
/*
|
||||
* Copyright 2004 The Apache Software Foundation.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package org.apache.commons.lang.mutable;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* A mutable <code>Object</code>.
|
||||
*
|
||||
* @since 2.1
|
||||
* @version $Id: MutableObject.java,v 1.1 2004/07/08 00:02:35 scolebourne Exp $
|
||||
*/
|
||||
public class MutableObject
|
||||
implements Mutable, Serializable {
|
||||
|
||||
/** Serialization lock. */
|
||||
private static final long serialVersionUID = 86241875189L;
|
||||
|
||||
/** The mutable value. */
|
||||
private Object value;
|
||||
|
||||
/**
|
||||
* Constructs a new MutableObject with the default value of null.
|
||||
*/
|
||||
public MutableObject() {
|
||||
super();
|
||||
}
|
||||
|
||||
/**
|
||||
* Constructs a new MutableObject with the specified value.
|
||||
*
|
||||
* @param value a value.
|
||||
*/
|
||||
public MutableObject(Object value) {
|
||||
super();
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------
|
||||
/**
|
||||
* Gets the value.
|
||||
*
|
||||
* @return the value
|
||||
*/
|
||||
public Object getValue() {
|
||||
return this.value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the value.
|
||||
*
|
||||
* @param value the value to set
|
||||
*/
|
||||
public void setValue(Object value) {
|
||||
this.value = value;;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------
|
||||
/**
|
||||
* Checks if this object equals the specified object.
|
||||
* <p>
|
||||
* The object must be a MutableObject with an equal value to be equal.
|
||||
*
|
||||
* @param obj the object to compare to
|
||||
* @return true if equal
|
||||
*/
|
||||
public boolean equals(Object obj) {
|
||||
if (obj instanceof MutableObject) {
|
||||
Object other = ((MutableObject) obj).value;
|
||||
return (value == other || (value != null && value.equals(other)));
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a suitable hashcode for this mutable.
|
||||
*
|
||||
* @return a suitable hashcode
|
||||
*/
|
||||
public int hashCode() {
|
||||
return (value == null ? 0 : value.hashCode());
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the String value of this mutable.
|
||||
*
|
||||
* @return the mutable value as a string
|
||||
*/
|
||||
public String toString() {
|
||||
return (value == null ? "null" : value.toString());
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,104 @@
|
|||
/*
|
||||
* Copyright 2002-2004 The Apache Software Foundation.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package org.apache.commons.lang.mutable;
|
||||
|
||||
import junit.framework.Test;
|
||||
import junit.framework.TestCase;
|
||||
import junit.framework.TestSuite;
|
||||
import junit.textui.TestRunner;
|
||||
|
||||
/**
|
||||
* JUnit tests.
|
||||
*
|
||||
* @version $Id: MutableObjectTest.java,v 1.1 2004/07/08 00:02:35 scolebourne Exp $
|
||||
* @see MutableShort
|
||||
*/
|
||||
public class MutableObjectTest extends TestCase {
|
||||
|
||||
public MutableObjectTest(String testName) {
|
||||
super(testName);
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
TestRunner.run(suite());
|
||||
}
|
||||
|
||||
public static Test suite() {
|
||||
return new TestSuite(MutableObjectTest.class);
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------
|
||||
public void testConstructors() {
|
||||
assertEquals(null, new MutableObject().getValue());
|
||||
|
||||
Integer i = new Integer(6);
|
||||
assertSame(i, new MutableObject(i).getValue());
|
||||
assertSame("HI", new MutableObject("HI").getValue());
|
||||
assertSame(null, new MutableObject(null).getValue());
|
||||
}
|
||||
|
||||
public void testGetSet() {
|
||||
final MutableObject mutNum = new MutableObject();
|
||||
assertEquals(null, new MutableObject().getValue());
|
||||
|
||||
mutNum.setValue("HELLO");
|
||||
assertSame("HELLO", mutNum.getValue());
|
||||
|
||||
mutNum.setValue(null);
|
||||
assertSame(null, mutNum.getValue());
|
||||
}
|
||||
|
||||
public void testEquals() {
|
||||
final MutableObject mutNumA = new MutableObject("ALPHA");
|
||||
final MutableObject mutNumB = new MutableObject("ALPHA");
|
||||
final MutableObject mutNumC = new MutableObject("BETA");
|
||||
final MutableObject mutNumD = new MutableObject(null);
|
||||
|
||||
assertEquals(true, mutNumA.equals(mutNumA));
|
||||
assertEquals(true, mutNumA.equals(mutNumB));
|
||||
assertEquals(true, mutNumB.equals(mutNumA));
|
||||
assertEquals(true, mutNumB.equals(mutNumB));
|
||||
assertEquals(false, mutNumA.equals(mutNumC));
|
||||
assertEquals(false, mutNumB.equals(mutNumC));
|
||||
assertEquals(true, mutNumC.equals(mutNumC));
|
||||
assertEquals(false, mutNumA.equals(mutNumD));
|
||||
assertEquals(true, mutNumD.equals(mutNumD));
|
||||
|
||||
assertEquals(false, mutNumA.equals(null));
|
||||
assertEquals(false, mutNumA.equals(new Object()));
|
||||
assertEquals(false, mutNumA.equals("0"));
|
||||
}
|
||||
|
||||
public void testHashCode() {
|
||||
final MutableObject mutNumA = new MutableObject("ALPHA");
|
||||
final MutableObject mutNumB = new MutableObject("ALPHA");
|
||||
final MutableObject mutNumC = new MutableObject("BETA");
|
||||
final MutableObject mutNumD = new MutableObject(null);
|
||||
|
||||
assertEquals(true, mutNumA.hashCode() == mutNumA.hashCode());
|
||||
assertEquals(true, mutNumA.hashCode() == mutNumB.hashCode());
|
||||
assertEquals(false, mutNumA.hashCode() == mutNumC.hashCode());
|
||||
assertEquals(false, mutNumA.hashCode() == mutNumD.hashCode());
|
||||
assertEquals(true, mutNumA.hashCode() == "ALPHA".hashCode());
|
||||
assertEquals(0, mutNumD.hashCode());
|
||||
}
|
||||
|
||||
public void testToString() {
|
||||
assertEquals("HI", new MutableObject("HI").toString());
|
||||
assertEquals("10.0", new MutableObject(new Double(10)).toString());
|
||||
}
|
||||
|
||||
}
|
|
@ -22,7 +22,7 @@ import junit.textui.TestRunner;
|
|||
/**
|
||||
* JUnit tests.
|
||||
*
|
||||
* @version $Id: MutableTestSuite.java,v 1.3 2004/07/07 23:50:28 scolebourne Exp $
|
||||
* @version $Id: MutableTestSuite.java,v 1.4 2004/07/08 00:02:35 scolebourne Exp $
|
||||
*/
|
||||
public class MutableTestSuite {
|
||||
|
||||
|
@ -39,6 +39,7 @@ public class MutableTestSuite {
|
|||
suite.addTest(MutableLongTest.suite());
|
||||
suite.addTest(MutableFloatTest.suite());
|
||||
suite.addTest(MutableDoubleTest.suite());
|
||||
suite.addTest(MutableObjectTest.suite());
|
||||
|
||||
return suite;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue