2012-11-12 21 views
4

我想创建这个XQPart接口的模拟。问题是它扩展了一个名为XQCloneable的接口,该接口有一个clone方法。如何实现与object.Clone冲突方法的接口

当我在Eclipse中使用这组作为一个接口一个新的类,我得到这个类:

public class Part implements XQPart {} 

有一个红色的错误波浪下Part

CloneNotSupportedException的中抛出的第Object.clone()与XQCloneable.clone()不兼容

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


注:我曾尝试实施方法,但并没有意识到我可以跳过throws声明中accepted answer告诉因此一直得到错误。

回答

9

你的班级继承Object.clone,这是宣布抛出CloneNotSupportedException。另一方面,您的班级实施XQCloneable,其clone没有throws子句。如果您只是创建一个空声明public Object clone() { return null; },它将使您的类与界面兼容。

+0

啊,谢谢,我们走吧。我知道我必须实施这个方法,只是不能让我活下去,因为我一直在弄错那个错误。删除'throws'声明修复了它的权利:) – Svish

0

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

0

由于@Emmerich状态,发生了错误,因为XQCloneable扩展Cloneable接口,这是因为clone()方法实际上是没有定义排序其中一个有趣的药汁,而是在Object类!

的语义是它必须能够创建一个执行Cloneable,这些类必须@Overrideclone()方法一类属性的属性副本,为Object版本刚刚抛出CloneNotSupportedException

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

干杯,