このメソッドを使用して作成された Object とその複製が等しいことを示すために、 other で次のメソッドのテストを作成する宿題があります。
/**
* Creates a new object that is a duplicate of this instance of
* Parameter.
* <p>
* The duplication is a "deep copy" in that all values contained in the
* Parameter are themselves duplicated.
*
* @return The new duplicate Parameter object.
*/
public Parameter copy( )
{
Parameter result = new Parameter( );
result.setName( getName( ) );
for ( int index = 0; index < getNumberOfValues( ); index++ )
{
result.addValue( getValue( index ).copy( ) );
}
return result;
}
私はさまざまな方法を書きましたが、結果は毎回それらが等しくないことを示しています。私のテストの1つ:
@Test
public void testCopy() {
Parameter param = new Parameter();
Value val1 = new Value();
//val1.setName("Hi!");
//param.addValue(val1);
Parameter param2 = param.copy();
Parameter expected = param;
Parameter actual = param2;
assertEquals(param, param2);
}
しかし、この方法では、param の正確な複製が作成されないようです。案内していただけますか?
そして、これは値のコピー方法です:
/**
* Creates a new Value object that is a duplicate of this instance.
*
* @return The new duplicate Value object.
*/
public Value copy( )
{
Value newValue = new Value( );
newValue.setName( getName( ) );
return newValue;
}