我正在對某個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