猿问

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

我的代码使用 Apache Commons Lang v.2 ( commons-lang)。如果我更新我的代码以改用 v.3 ( commons-lang3),我是否应该担心我的代码可能会开始表现不同(当然,由于已修复的错误和可能的新错误导致的差异除外,这是正常的并且不算数) ?

换句话说,可以lang3有同样在lang(具有完全相同的签名)但可能在两个版本中返回不同结果的方法吗?

Apache 确实提到了向后不兼容,而且非常清楚,但我总是从它们破坏编译的意义上理解这些不兼容,而不是从完全相同的方法可以返回不同结果的意义上。

lang我问这个是因为据我所知,促使 Apache 将包从重命名为的某些向后不兼容性lang3是可能返回不同结果的方法。我认为这是一个错误的说法,对我来说这很重要,因为我总是很高兴地替换我lang偶然发现的lang3所有s 并且我只检查它是否仍然可以编译,而且我真的认为我是对的,但现在,由于import那些说法,我被告知停止,我认为这是错误的,但我没有任何信息可以用来反驳这些说法并被允许继续。


慕尼黑5688855
浏览 263回答 1
1回答

RISEBY

你读过他们的迁移指南吗?它说,尽管 v3 上有向后不兼容的标签,但大多数升级都像更新导入一样简单,以lang3代替lang.有一些类和方法被删除,任何 IDE 和编译器都会为您快速识别。我认为更危险的地方是方法的行为和契约发生了变化。例如,请参阅此注释:StringUtils.isAlpha、isNumeric 和 isAlphanumeric 现在在传递空字符串时都返回 false。以前他们返回 true。如果您的代码使用这些方法,您可能会看到不同的行为。由您决定您的代码是否使用它们,如果使用,如果您关心的话。
随时随地看视频慕课网APP

相关分类

Java
我要回答