如何实现与object.Clone冲突方法的接口

时间:2012-11-12 13:23:18

标签: java methods interface java-5

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

当我在Eclipse中使用此set作为接口创建一个新类时,我得到了这个类:

public class Part implements XQPart {}

Part

下出现红色错误
  

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

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


注意: 我确实试图实现该方法,但没有意识到我可以跳过throws声明,如{{1}}中所述3}}所以不断收到这个错误。

3 个答案:

答案 0 :(得分:10)

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

语义是,应该可以创建实现Cloneable的类的逐个属性副本,并且这些类必须@Override clone()方法,如{ {1}}版本只会抛出Object

你的mock和uni测试是否需要创建CloneNotSupportedException实现的副本/克隆取决于你决定/确定 - 在大多数情况下我不希望如此,只是让方法返回null或者身份。

干杯,