为了账号安全,请及时绑定邮箱和手机立即绑定

Apache Commons Lang:“lang”和“lang3”之间的“不兼容性”

Apache Commons Lang:“lang”和“lang3”之间的“不兼容性”

慕尼黑5688855 2023-03-17 15:21:03
我的代码使用 Apache Commons Lang v.2 ( commons-lang)。如果我更新我的代码以改用 v.3 ( commons-lang3),我是否应该担心我的代码可能会开始表现不同(当然,由于已修复的错误和可能的新错误导致的差异除外,这是正常的并且不算数) ?换句话说,可以lang3有同样在lang(具有完全相同的签名)但可能在两个版本中返回不同结果的方法吗?Apache 确实提到了向后不兼容,而且非常清楚,但我总是从它们破坏编译的意义上理解这些不兼容,而不是从完全相同的方法可以返回不同结果的意义上。lang我问这个是因为据我所知,促使 Apache 将包从重命名为的某些向后不兼容性lang3是可能返回不同结果的方法。我认为这是一个错误的说法,对我来说这很重要,因为我总是很高兴地替换我lang偶然发现的lang3所有s 并且我只检查它是否仍然可以编译,而且我真的认为我是对的,但现在,由于import那些说法,我被告知停止,我认为这是错误的,但我没有任何信息可以用来反驳这些说法并被允许继续。
查看完整描述

1 回答

?
RISEBY

TA贡献1856条经验 获得超5个赞

你读过他们的迁移指南吗?

它说,尽管 v3 上有向后不兼容的标签,但大多数升级都像更新导入一样简单,以lang3代替lang.

有一些类和方法被删除,任何 IDE 和编译器都会为您快速识别。

我认为更危险的地方是方法的行为和契约发生了变化。例如,请参阅此注释:

StringUtils.isAlpha、isNumeric 和 isAlphanumeric 现在在传递空字符串时都返回 false。以前他们返回 true。

如果您的代码使用这些方法,您可能会看到不同的行为。由您决定您的代码是否使用它们,如果使用,如果您关心的话。


查看完整回答
反对 回复 2023-03-17
  • 1 回答
  • 0 关注
  • 197 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信