Java中的“代码过大”编译错误

112

Java中的代码有最大长度限制吗?我写了一个超过10,000行的函数。实际上,每一行都将一个值赋给一个数组变量。

arts_bag[10792]="newyorkartworld";
arts_bag[10793]="leningradschool";
arts_bag[10794]="mailart";
arts_bag[10795]="artspan";
arts_bag[10796]="watercolor";
arts_bag[10797]="sculptures";
arts_bag[10798]="stonesculpture"; 

编译时出现错误:代码太大。

我该如何解决?


10
我只是惊呆了……一定有更好的方法来做这件事。 - Thanos Papathanasiou
3
是的,我同意 - 设计是没有希望的。最初,数组的大小只有64,所以我觉得没有必要从文件中读取...现在代码的其余部分依赖于这个数组,所以我想我可以找到一个临时的解决方案,然后稍后通过从文件中读取来重新安排事情。好的,我会尝试你的建议,谢谢! - trinity
9
对于这种情况,您确实需要查看数据库,如果不行的话,可以考虑属性文件。 - Paul Whelan
1
三位一体。你最初说这只限于64,所以这没问题。在编程时应始终考虑意外扩展,第一次就做对将节省未来的时间,而且说实话,具有查找方法的.properties文件并不需要额外的工作量。始终要认真思考你正在编写的任何代码是否可能在未来扩展,并相应地编写代码。放置“临时”解决方案从来都不会有好结果,它们最终会进入生产代码中,并被遗忘,直到你遇到问题,或者其他人必须进行大规模重构以解决它。 - David Billings
9
为什么要让你的应用程序在启动时花费大量时间解析文本文件,而不是在编译时让编译器预先生成所有内容呢?如果您想要在不重新编译的情况下更改数据或手动编写方法,则这是糟糕的设计,但如果您生成源代码,则这并不是糟糕的设计。(至少如果您以一种实际允许编译器预先生成数组的方式进行)。 - Guntram Blohm
显示剩余4条评论
14个回答

1

这是因为所有的代码都在单个方法中。

解决方案:创建更多一些小方法,那么这个错误就会消失。


1
你可以添加另一种方法来为你的代码创建空间以获取额外的数据空间,你可能有一个占用大量数据空间的方法。尝试拆分你的方法,因为我曾经遇到过同样的问题,并通过为我的Java Android代码创建另一个相同数据的附加方法来解决它,之后问题就消失了。

这更像是一条评论而不是一个答案。 - user3071284

0

由于方法有大小限制,而且您现在不想重新设计代码,也许您可以将数组分成4-5个部分,然后将它们放入不同的方法中。在读取数组时,按顺序调用所有方法。您还可以维护一个计数器来知道已解析多少个索引。


0

好的,也许这个答案有点晚了,但我认为这种方式比另一种方式更好

例如,我们在代码中有1000行数据

  1. 拆分它们

    private void rows500() {
         //在这里编写1-500行
    }
    
    private void rows1000() {
         //在这里编写500-1000行
    }
    
  2. 为了更好的性能,在您的代码中加入“if”语句

    if (count < 500) {
        rows500();
    } else if (count > 500) {
        rows1000();
    }
    
我希望这段代码对你有所帮助。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接