我想创建一个这个XQPart接口的模拟器。问题是它扩展了一个名为XQCloneable的接口,它具有clone方法。
当我在Eclipse中使用此set作为接口创建一个新类时,我得到了这个类:
public class Part implements XQPart {}
在Part
说
Object.clone()的throws子句中的CloneNotSupportedException与XQCloneable.clone()不兼容
我可以在这做什么?有没有办法实现这个接口?
注意: 我确实试图实现该方法,但没有意识到我可以跳过throws
声明,如{{1}}中所述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或者身份。
干杯,