方法返回类型更新后的Java库版本

方法返回类型更新后的Java库版本,java,version,versioning,Java,Version,Versioning,我修改了一个Java库,将一些方法的返回类型从原语改为等价类(例如从int改为Integer,从float改为float)。库中没有其他更改 在正常使用中,更改不应改变库的行为,因为Java会自动取消对值的装箱。否则,如果返回值为null,JVM将抛出异常(当前库在解析阶段抛出错误异常) 鉴于当前版本是1.0.1,我应该将新库发布为1.1.0还是2.0.0? 如果一个方法声明在一个版本中返回非null值,则将其更改为返回 null实际上是一种不兼容的更改,因为这种更改可以从外部观察到,并且会对组

我修改了一个Java库,将一些方法的返回类型从原语改为等价类(例如从int改为Integer,从float改为float)。库中没有其他更改

在正常使用中,更改不应改变库的行为,因为Java会自动取消对值的装箱。否则,如果返回值为null,JVM将抛出异常(当前库在解析阶段抛出错误异常)

鉴于当前版本是1.0.1,我应该将新库发布为1.1.0还是2.0.0?

如果一个方法声明在一个版本中返回非null值,则将其更改为返回
null
实际上是一种不兼容的更改,因为这种更改可以从外部观察到,并且会对组件的用户产生负面影响

书中的另一种方式是:

通常,版本标识符包括主版本号和次版本号,期望次版本更新与主版本号相同的早期版本向后兼容

以及在:

原则上,在后续版本中,当功能有显著的跳跃时,主版本号会增加;当只添加了次要功能或重要修复时,次版本号会增加;当修复了次要错误时,修订版本号会增加


是否有任何版本控制流程或指南?对我们来说,像这样的改变会变成1.0.2。你最不想做的事情就是开始跳转版本,打破任何现有的一致性。不,没有流程或指南,这是一个我在业余时间工作的图书馆。我同意你的评论,我希望避免无缘无故地增加太多的版本号。好吧,基于你的两个选择,我会选择1.1.0,因为变化似乎很小。发现这一点,可能很有用…所以你建议使用2.0.0?但是我的更改不是严格向后兼容的,因为可能返回空值。因为你已经有了1.0.0和1.0.1版本,下一个版本显然是1.0.2