您认为使用番石榴的最佳方式是哪种?因为,在网站上,这些人说接口可能会发生变化,直到发布1.0。考虑到这一点,您编写的代码不应直接依赖于这些接口,因此,您是否将所调用的所有Guava代码包装到我们的项目中的某种层或外观中,以便,如果这些接口发生更改,那么您至少将这些变化集中在一个地方?
哪种方式最好?我真的很有兴趣开始使用它,但我有这个问题击中我的想法哈哈哈:)
答案 0 :(得分:19)
我不确定在1.0版本之前,接口可能会发生变化。对于Guava的前身Google Collections来说,情况确实如此,但它已经发布了1.0版本,现在已成为Guava的一部分。此外,任何属于Google收藏集的内容都不会以可能破坏代码的方式进行更改。
Guava本身甚至不使用具有“1.0”概念的发布系统。它只是does releases,标有“r05”,“r06”等等。除非用@Beta注释标记,否则Guava中的所有API都会被有效冻结。如果@Beta
位于类或接口上,则该类中的任何内容都可能发生变化。如果一个类没有用它注释,但是类中有一些方法,那些特定的方法可能会发生变化。
请注意,即使使用@Beta
API,它们提供的功能也很可能无法完全删除...最多它们可能只会改变提供该功能的方式。此外,我相信他们会弃用他们在1个版本中更改的任何@Beta
API的原始形式,然后再完全删除它,让您有时间看到它已更改并更新到该API的新形式。 @Beta
并不意味着某个类或方法没有经过充分测试或适合生产使用。
最后,如果您正在处理使用Guava的应用程序,这应该不是什么大问题。无论何时更新到新版本都应该很容易,如果您使用的任何@Beta
API已更改,只需在此处进行更改。编写库的人使用Guava,他们确实需要避免使用@Beta
API,因为使用它可能会导致您无法在应用程序中切换到较新版本的Guava或者使用另一个使用较新版本的库,因为它会破坏旧库中依赖于已更改/删除的beta API的代码。