我正在对某个Java 7 API(即作为开放源代码在公共用途中)进行QA。我的Clirr报告检查向后的API兼容性。我得到了以下错误:在不破坏向后兼容性的情况下将返回类型从Integer更改为int
[ERROR] 7006: com.example.Foo: Return type of method 'public java.lang.Integer nameToUnicode(java.lang.String)' has been changed to int
[ERROR] 7006: com.example.Bar: Return type of method 'public byte getAnchorDelta()' has been changed to short
因此,这意味着我的开发人员改变了Foo
返回类型从Integer
到int
,而Bar
返回类型从byte
改为short
。方法签名保持不变,所以超载不是一种选择。
- 这是否真的打破向后兼容性?还是Clirr给我一个误报?
- 如何解锁向后兼容性?这甚至可能没有引入新的方法名称?
我有一个关于返回类型的变化(主要是一些void
s到float
)夫妇其他错误,但他们在protected
方法,所以我会忽略它们。
如果您希望保留向后兼容性,则需要保留相同的现有签名。您可以添加新的API,但现有的API必须与之前的版本保持一致。 – ManoDestra