欢迎!有关如何使用本页信息,请参阅 关于 页面。
目前 count() 返回 int 类型 - 应将其提升为 long 类型。
在 long 类型溢出时,count() 应抛出 ArithmeticException。另见 CLJ-1229。
评论者:slipset
从这个问题看来,有一些问题,如下clojure.lang.RT#toArray 线 1658 行你们将基于集合的 count 创建一个新的 Object 数组。看起来 new Object(link: ) 接受一个 int 类型的参数,所以必须将 long 类型的结果强制转换为 int 类型才能使其工作。
评论者:alexmiller
如果你创建的 Object(link: ) 超过 2147483647,你可能有其他问题。 ;)
但确实,此工单需要更彻底的分析,以确定影响范围。在这种情况下,我认为如果 count 小于等于 Integer/MAX_VALUE,则应继续执行,否则应抛出异常。
这也会影响到 java.util.Collection 的 size 属性clojure.lang.APersistentSet#size 线 164size 属性由以下指定
http://docs.oracle.com/javase/7/docs/api/java/util/Collection.html#size()