【发布时间】:2018-08-02 16:58:43
【问题描述】:
我正在通过 Android Studio 3.1.3 在 Kotlin 中编程。我创建了一个 Long 类型的数组,它显然太大而无法编译。在玩了一会儿之后,我发现我可以编译的最大数组包含 8,207 个元素。包含 8,208 个或更多元素的数组导致编译错误。数组中有 350 行元素,其中包含按数字顺序排列的素数。两个问题:
有人知道为什么会存在这个限制吗? 8,208 是 (2^13 + 2^4),但这似乎是一个奇怪的临界点。所以,我怀疑这是限制的原因。
有没有办法增加数组的允许大小?
注意:在 Android 论坛上,有人建议我使用 ArrayList 而不是 ArrayLong。我很欣赏这个建议并打算尝试一下,但对长阵列的限制对我来说仍然很奇怪。如果有人有更优雅的解决方案或对限制的解释,我很想听听!感谢您的宝贵时间。
【问题讨论】:
-
请显示您的代码和您得到的确切错误。数组大小肯定不会导致编译错误。
-
@Earl Whitney 数组中有350行元素你的意思是编辑器行吗?
-
代码如下所示:val primes: LongArray = longArrayOf(2, 3, 5, 7, 11, 13, 17 ... 84143, 84163, 84179, 84181, 84191)。确切的错误是:java.lang.illegalStateException:Backend Internal error: Exception during code generation。原因:错误生成类文件primeskt类...
-
350 行元素,我的意思是在 Primes.kt 文件中,8,207 个元素在编辑器中占据 350 行。这可能与错误无关,但我想提供尽可能多的信息。