草庐IT

java - Guava/Google Collections 的向后兼容性如何?

我正在开发包含多个项目的大型应用程序,所有项目仍然使用GoogleCollections1.0。我想升级到Guava12。项目的测试覆盖率不是很好。有没有人有过类似的升级经验,有没有不兼容的地方?主要问题是什么? 最佳答案 这里是Guava贡献者。Guava12几乎完全向后兼容GoogleCollections,但极少数方法已经过了18个月的弃用期并被删除;见https://code.google.com/p/guava-libraries/issues/detail?id=836.也就是说,没有人应该仍然在使用GoogleColl

java - 在 Guava 中,为什么在可能使用 "T"的地方只使用 "? super T"?

为什么实用程序工厂方法经常使用特定的通用参数(如T)而不是有界通配符参数(如?superT)?例如Functions#forPredicate的签名是:publicstaticFunctionforPredicate(Predicatepredicate)为什么不使用:publicstaticFunctionforPredicate(Predicatepredicate)哪个可以使类似下面的事情成为可能?PredicateisPositivePredicate=...FunctionisPositiveInteger=Functions.forPredicate(isPositiveP

java - 如何防止使用 google guava 库中的 beta 类?

几个月来,我们一直在生产中使用Google集合。我们想开始使用Guava来获得额外的功能。但是,我担心将Guava带入我们的产品堆栈b/c一些开发人员可能会开始使用“测试版”类。我们的代码中有各种单元测试,但在这一点上,我不希望包含“测试版”类b/c,它在未来可能会发生变化。是否有任何简单的方法来检测项目是否包含任何“测试版”Guava类? 最佳答案 Overstock.com最近released标记@Beta类、方法或字段的使用的Findbugs插件。 关于java-如何防止使用goo

java - 生成等号和哈希码时忽略属性

假设我有一个类客户:publicclassCustomer{privateStringfirstName;privateStringlastName;privateStringdoNotAddMeToEquals;//GettersandSettersbelow}我正在使用GuavaEclipsePlugin在Eclipse中生成我的equals()和hashCode()方法;但是,我也可以使用eclipse->Source->GenerateHashCode/Equals。无论哪种方式......都没关系。有没有一种方法可以注释属性doNotAddMeToEquals,这样当我使用g

java - 在 Guava Cache 对象上启用统计信息的性能损失是多少?

显然,正确答案是“对其进行基准测试并找出答案”,但本着互联网的精神,我希望有人能为我完成这项工作。我非常喜欢Guava的网络服务缓存库。然而,他们的文档在这一点上相当含糊。recordStatspublicCacheBuilderrecordStats()EnabletheaccumulationofCacheStatsduringtheoperationofthecache.WithoutthisCache.stats()willreturnzeroforallstatistics.Notethatrecordingstatsrequiresbookkeepingtobeperfor

java - 用于编写 Tensorflow TFRecords 数据文件的纯 Java/Scala 代码

我正在尝试编写TensorflowRecordWriter类的纯Java/Scala实现,以便将SparkDataFrame转换为TFRecords文件。根据文档,在TFRecords中,每条记录的格式如下:uint64lengthuint32masked_crc32_of_lengthbytedata[length]uint32masked_crc32_of_data和CRC掩码masked_crc=((crc>>15)|(crc目前,我使用以下代码使用guava实现计算CRC:importcom.google.common.hash.HashingobjectCRC32{valkM

java - 如何处理类路径冲突

在我的项目中,我同时使用了glassfish-embedded3.1.1和guava库...问题是glassfish附带了guava的旧实现(即google-collections)...这会导致在运行时出现NoSuchMethodError,例如在使用Lists.reverse()或Sets.newIdentityHashSet()时,这些在guava中稍后引入。我没有找到任何解决方案来解决这个问题...(唯一的方法是手动删除glassfishjar中的com/googleclasses目录...) 最佳答案 您可以通过指定以下内

java - 为什么ImmutableSet允许重复,而ImmutableMap不允许

我注意到(并赞赏!)Guava的ImmutableMap.Builder如果已将重复键添加到构建器,则无法构建。然而,相同的行为(添加重复元素)在ImmutableSet中成功。这种差异有什么原因吗?有什么好的方法可以构造具有相同故障行为的ImmutableSet?测试用例:importstaticorg.testng.Assert.*;importorg.testng.annotations.Test;importcom.google.common.collect.ImmutableMap;importcom.google.common.collect.ImmutableSet;pu

java - Guava 资源

按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭11年前。我注意到ApacheCommons图书馆已经出版了3本书。Guava图书馆有书吗?该库似乎包含很多内容,但我似乎找不到一个一致的指南来对整个库及其编写方式进行良好的概述和基准测试。

java - Guava 缓存的复杂键(移位)

我有一个点对象:classPoint{finalintx,y;...}因为这些点将在我的代码中到处使用/创建,所以我想开始使用guavas缓存。不幸的是CacheLoader只接受一个参数。Anotherquestion在stackoverflow上使用一对对象来解决类似的问题。但我不喜欢为每个缓存请求创建虚拟对象的想法。所以我想出了自己的解决方法:因为对象是由x和y指定的,所以我想我可以将两个值合并(移位)到一个long中,这将是我的键。voidtest(intx,inty){Longkey=(long)((long)(x)loader=newCacheLoader(){public