5

我想创建这个XQPart接口的模拟。问题是它扩展了一个名为XQCloneable的接口,它有一个克隆方法。

当我在 Eclipse 中创建一个将此集作为接口的新类时,我得到了这个类:

public class Part implements XQPart {}

Part在说下面有一个红色的错误

Object.clone() 的 throws 子句中的 CloneNotSupportedException 与 XQCloneable.clone() 不兼容

我可以在这里做什么?有没有办法实现这个接口?


注意:我确实尝试实现该方法,但没有意识到我可以跳过接受答案throws中告知的声明,因此一直收到该错误。

4

3 回答 3

11

你的类继承Object.clone,它被声明为 throw CloneNotSupportedException。另一方面,你的类实现了XQCloneable,它clone没有throws子句。如果您只是创建一个空声明public Object clone() { return null; },它将使您的类与接口兼容。

于 2012-11-12T13:32:39.713 回答
0

如果您正在为单元测试制作模拟对象,则需要实现该方法(即使它是无操作的)。模拟接口将需要空方法来匹配接口的要求。只要确保您正在测试的单元不需要无操作方法即可。

于 2012-11-12T13:25:37.267 回答
0

正如@Emmerich 所说,发生错误是因为XQCloneable扩展了Cloneable接口,这是一种有趣的混合物,因为该clone()方法实际上并未在其中定义,而是在Object类中定义!

语义是应该可以创建实现的类的逐个属性副本,Cloneable并且这些类必须@Overrideclone()方法,因为Object版本只是抛出CloneNotSupportedException.

您的模拟和 uni 测试是否需要创建实现的副本/克隆由XQPart您决定/确定 - 在大多数情况下,我不希望如此,只是让方法返回 null 或标识。

干杯,

于 2012-11-12T13:33:44.363 回答