欢迎!请参阅 关于 页面,了解该产品的工作方式。
目前 count() 返回 int 类型 - 应将其更改为 long。
当 long 类型的溢出发生时,count() 应抛出 ArithmeticException。另见 CLJ-1229。
评论由:slipset 提出
看到这个问题,有一些问题就像在clojure.lang.RT#toArray 行 1658中创建基于集合计数的新的 Object 数组。看起来 new Object() 函数需要 int 类型的参数,所以可能需要将 long 类型强制转换为 int 以使操作有效。
评论由:alexmiller 提出
如果你创建的 Object() 大于 2147483647,你可能还有其他问题。 ;)
是的,这个 bug 项确实需要一个更深入的检查,以确定它影响了哪些内容。在这种情况下,我认为如果计数 <= Integer/MAX_VALUE,则应该进行操作,否则应该抛出异常。
嗯,这也引发了与 java.util.Collection 大小有关的某些问题clojure.lang.APersistentSet#size 行 164大小由
http://docs.oracle.com/javase/7/docs/api/java/util/Collection.html#size() 指定