gpt4 book ai didi

java - 此方法是否创建完全相同的副本? (java中的一种复制方法)

转载 作者:行者123 更新时间:2023-11-28 21:13:39 25 4
gpt4 key购买 nike

我有一项作业是为以下方法编写测试,以证明使用此方法创建的 Object 及其副本是相等的。

   /**
* 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;
}

我写了不同的方法,但每次结果都显示它们不相等。我的一个测试:

@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);
}

但似乎这个方法并没有创建和精确复制参数。你能指导我吗?

这是值的复制方法:

   /**
* 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;
}

最佳答案

您的参数类需要一个 equals 方法 ()。没有这个 java 运行基于引用的相等性( Object.equals() 的默认行为),因此你的观察。

您的 equals 方法可能如下所示:

public boolean equals(Object o)
{
Parameter p = (Parameter)o;
return this.getName().equals(p.getNames) && this.getNumberOfValues() == p.getNumberOfValues() &&B this.values().equals(p.values());
}

关于java - 此方法是否创建完全相同的副本? (java中的一种复制方法),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11745068/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com